2011-06-19 69 views
5

一次多個命令我在PHP/Linux的一個問題,說明如下:PHP了shell_exec在背景

我有通過了shell_exec(的plesk CLI命令訂閱的網絡空間 - 關閉)來執行Linux命令。

問題是,當我這樣做從PHP的工作,但重新啓動Apache,導致一個空白頁,而Apache重新啓動。

爲了擺脫這個問題,我有打電話給在背景了shell_exec,具有延遲(預期的結果:網頁負載和後4秒運行的Linux腳本。)

我做了一些嘗試類似:

shell_exec("sleep 4 && /var/www/vhosts/site.com/httpdocs/wrapper2 3 --webspace-off ".$domain_name." &"); 

但php會等待響應。

不知何故,我需要睡眠一個linux命令的執行,所有這些都必須在bg。, 中運行,並且不要等待響應。

感謝

回答

7

你應該嘗試使用exec而不是shell_exec,所有輸出重定向到/dev/null。喜歡的東西:

exec("(sleep 4 && ... --webspace-off ".$domain_name.") > /dev/null 2>&1 &"); 

(請注意,命令周圍的():你需要她倆都sleep和包裝器的輸出流)

編輯:並真正確保您驗證$domain_name。未經驗證,並與

$domain_name = "; rm -rf ..."; 

你就麻煩了......

+0

哦不錯,它爲我的感謝 – Tech4Wilco