X-Git-Url: http://git.home-dn.net/?p=manu%2Fsuphp.git;a=blobdiff_plain;f=src%2FApplication.cpp;h=bb7ce50f7d6d63ef5a52ea3a563ab95ca7ae97ee;hp=dd2a02ea830caad1ba96b9993bdedb285a99b9ef;hb=59c5bff8d9aef402c868519d13398ba4eb2dddb7;hpb=873afb00229b8e205345b6895eaad6602d5e10f4 diff --git a/src/Application.cpp b/src/Application.cpp index dd2a02e..bb7ce50 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -89,6 +89,12 @@ int suPHP::Application::run(CommandLine& cmdline, Environment& env) { this->checkScriptFile(scriptFilename, config, env); + // Root privileges are needed for chroot() + // so do this before changing process permissions + if (config.getChrootPath().length() > 0) { + api.chroot(config.getChrootPath()); + } + this->changeProcessPermissions(scriptFilename, config, env); interpreter = this->getInterpreter(env, config); @@ -97,6 +103,12 @@ int suPHP::Application::run(CommandLine& cmdline, Environment& env) { // Prepare environment for new process newEnv = this->prepareEnvironment(env, config, targetMode); + // Set PATH_TRANSLATED to SCRIPT_FILENAME, otherwise + // the PHP interpreter will not be able to find the script + if (targetMode == TARGETMODE_PHP && newEnv.hasVar("PATH_TRANSLATED")) { + newEnv.setVar("PATH_TRANSLATED", scriptFilename); + } + // Log attempt to execute script logger.logInfo("Executing \"" + scriptFilename + "\" as UID " + Util::intToStr(api.getEffectiveProcessUser().getUid())