[英]shell_exec(); not working properly in PHP
我正在嘗試通過shell_exec()執行命令; 但它什么也沒做。 我知道了shell_exec(); 已啟用,因為它們可以完美地工作:
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。
嘗試查看函數的返回代碼$return_var
(函數system
exec
最后一個參數)。 如果成功,則應為0
。 如果是127
可能是服務器上不允許使用命令行,或者您沒有足夠的特權來運行來自PHP腳本的命令(這取決於執行腳本的用戶/組)。 否則,函數只會返回空的輸出數組,就像沒有發生好壞一樣。
不久前,我遇到了類似情況, ls
工作正常,而wget
總是失敗。
您可能會收到一個權限被拒絕的錯誤,特別是因為您試圖將輸出重定向到/dev/null
。 可能想考慮一項cron作業,但是我不確定為什么要重定向輸出並在后台運行它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.