2012-07-24 130 views
0

我試圖通過shell_exec()執行一個命令;但它什麼都不做。我知道shell_exec();已啓用,因爲這些工作完美:shell_exec();在PHP中不能正常工作

echo shell_exec('which php'); 
echo shell_exec('ls'); 

它們確實輸出。

問題是,當我要執行這樣的事情:

shell_exec("php file.php var1 var2 > /dev/null &"); 

它什麼都不做,但是當我在我的電腦上運行它直通終端,它的工作。 我也試過這樣的完整路徑做:

shell_exec("/usr/bin/php /full/path/file.php var1 var2 > /dev/null &"); 

而且它不工作,但再次...如果我運行它通過我的終端的計算機工作。

php.ini安全模式關閉,並且沒有禁用的功能,所以我不知道會發生什麼。是的,我可以訪問SSH並獲得專用IP。

+0

預期的結果是什麼?什麼是'file.php'應該做的? – Tchoupi 2012-07-24 18:42:18

回答

0

嘗試查看函數的返回碼$return_var(函數的最後一個參數systemexec)。如果成功,應該是0。如果它是127服務器上可能不允許命令行,或者您沒有足夠的權限從PHP腳本運行命令(這取決於執行腳本的用戶/組)。否則,函數只是返回空輸出數組,就像沒有好的或壞的事情發生一樣。

不久前我遇到過類似的情況,ls工作正常,而wget總是失敗。

0

您可能會遇到權限被拒絕的錯誤,特別是您嘗試將輸出重定向到/dev/null。可能想考慮一個cron作業,但我不確定爲什麼你重定向輸出並在後臺運行它。