2012-03-26 44 views
2

好吧我需要运行我的Apache Web服务器为。为此,我输入了whoami;在终端。它给我输出:。但是,当我检查我的Apache服务器作为root用户运行或不执行以下php脚本:<?php echo whoami; ?>它给我输出:没有人。因此,任何建议执行/登录为apache的根用户?Apache作为Ubuntu的根目录

+5

为什么要那样做ಠ_ಠ – 2012-03-26 14:10:53

+0

因为我在Xen上virtualization.I工作正在使用的libvirt-PHP与管理程序交谈开始创建销毁等等等等。为此,我使用了这个php脚本:<?php $ conn = libvirt_connect(“xen:///”); $ name = libvirt_domain_lookup_by_id($ conn,3); $ dest = libvirt_domain_destroy($ name); echo $ dest; ? \t > 当我执行这一点,显示我:警告:libvirt_domain_destroy()[function.libvirt域灭]:操作virDomainDestroy禁止在/opt/lampp/htdocs/xampp/shutdown.php只读访问在线5 – Alee 2012-03-26 14:14:19

+0

我不认为你需要以root身份运行Apache/PHP才能连接到libvirt。连接时只需提供适当的凭据。 – Brian 2012-03-26 14:26:49

回答

2

如果你知道你在做什么,看看文件的/ etc/apache2的/ envvars中

您可以自定义这些变量

export APACHE_RUN_USER=root 
export APACHE_RUN_GROUP=root 
+2

没有重新编译Apache就无法工作 – David 2013-01-03 02:43:11

3

我建议创建一个外部的PHP文件您的服务器将处理与此扩展相关的所有内容。然后,您可以将shell_execsudo结合起来调用此脚本。

这样,你可以把你的web服务器用户放在你的sudoers文件中,让它以root身份运行php-cli。

然后,在你的脚本,你可以简单地使用:

$output = shell_exec("sudo /bin/php /yourscript.php"); 

这将是一个安全的解决方案比运行Apache的根,这在我看来,是一个柠坏主意,即使你知道你在做什么。

+0

对1M用户来说会更快吗? – 2013-05-20 04:36:44

+1

在最初的问题中,表现不是问题。就像我说的,这是一个非常糟糕的做法,我不会太依赖它。因人而异。 – 2013-05-21 12:37:52

0

我以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; 
相关问题