好的,我需要将我的Apache Web服务器作为root运行。为此,我在终端中输入whoami;,它会输出root。但是当我通过执行以下php脚本检查我的Apache服务器是否以root用户身份运行时:< ?php echo whoami; ?>它给出了nobody的输出结果。那么有什么建议可以在Apache中以root用户身份执行/登录吗?
好的,我需要将我的Apache Web服务器作为root运行。为此,我在终端中输入whoami;,它会输出root。但是当我通过执行以下php脚本检查我的Apache服务器是否以root用户身份运行时:< ?php echo whoami; ?>它给出了nobody的输出结果。那么有什么建议可以在Apache中以root用户身份执行/登录吗?
我建议在您的服务器上创建一个外部的PHP文件,用于处理与此扩展相关的所有内容。然后,您可以使用shell_exec
结合sudo
来调用此脚本。
这样,您可以将您的Web服务器用户放入sudoers文件中,并让它以root身份运行php-cli。
然后,在您的脚本中,您可以简单地使用:
$output = shell_exec("sudo /bin/php /yourscript.php");
相较于以root用户身份运行Apache,这是一种更加安全的解决方案。在我看来,即使你知道自己在做什么,以root用户身份运行Apache也是一个非常糟糕的想法。
您可以自定义这些变量
export APACHE_RUN_USER=root
export APACHE_RUN_GROUP=root
我认同以root身份运行apache进程的担忧。这只是一个糟糕的想法。 因此,我最近发布了一个项目,允许PHP获取并与真实的Bash shell交互。在这里获取:https://github.com/merlinthemagic/MTS
下载后,您只需使用以下代码:
$shell = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1 = $shell->exeCmd('php /var/scripts/test.php');
//the return will be a string containing the return of the script
echo $return1;