2013-04-22 80 views
4

我需要執行命令從PHP寫入我的vhosts.conf。 我有一個add_vhost.sh文件:從文件沒有密碼php執行命令

cat /home/www/test/conf/vhosts.conf >> /etc/httpd/conf.d/vhosts.conf 

這是PHP腳本:

exec($path_to_add_vhost_sh_file, $output); 

我想沒有設定密碼要求爲peter用戶給exec這個文件,所以我在/etc/sudoers

做下一件事

peter ALL=(ALL)NOPASSWD:/home/www/test/conf/add_vhost.sh但它仍然不工作,即使在控制檯。 的Fedora 15

+4

您的Web服務器是「彼得」的用戶下運行?你在php的命令前添加了'sudo'? – 2013-04-22 13:57:46

+0

哦,我看到web服務器正在www-data下運行:/ – 2013-04-22 14:03:21

回答

6

如果你的Web服務器運行作爲www-data用戶用戶:

www-data ALL=(ALL:ALL) NOPASSWD: /path/to/your/script 

如果不是,則更換www-data由Web服務器的用戶名。

在PHP千萬不要錯過你的命令行與sudo在前面加上:

exec('sudo /path/to/your/script'); 
+0

是的,'www-data'用戶是web服務器用戶,謝謝 – 2013-04-22 14:04:18

+0

這當然只適用於你通過web執行腳本。 (我認爲這是)。它現在工作嗎? – hek2mgl 2013-04-22 14:06:52

+0

是的'sudo path_to_script' – 2013-04-22 14:07:37