2012-03-26 45 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; 
相關問題