2016-12-29 63 views
-3

我哈瓦一個簡單的PHP腳本這樣PHP EXEC返回從網絡訪問時,空輸出

<?php  
exec('foo you 2>&1', $output, $return_val); 
print_r($output); 

執行它的命令行就給出了

Array 
(
    [0] => sh: foo: command not found 
) 

但是當我把它放在一個網頁下服務器文件目錄並從瀏覽器訪問它它顯示

Array () 

我使用nginx + phpfpm和服務器配置是正確的。

如您所見,我將錯誤從stderr重定向到stdout。還有更多,return_var是-1

所以問題是,爲什麼它從瀏覽器訪問時返回空,而在命令行上執行時是正常的。

謝謝。

+0

的可能的複製[PHP的exec()不執行命令(http://stackoverflow.com/questions/17914402/php-exec-is-not-executing-the-command) – 2016-12-29 07:22:49

+0

保持你的語言 – 2016-12-29 07:35:42

回答

0

我重新啓動php-fpm,它的工作原理,但我不知道爲什麼。

yxr ~ :(# ps aux|grep fpm 
root  277 0.0 0.4 143416 10144 ?  Ss Dec24 0:27 php-fpm: master process (/usr/local/etc/php-fpm.conf) 
nobody 12971 0.0 0.9 2870504 19000 ?  S Dec25 1:14 php-fpm: pool www 
nobody 14133 0.0 1.0 2925356 21764 ?  S Dec26 0:38 php-fpm: pool www 
nobody 22487 0.0 1.0 2905708 22236 ?  S Dec26 0:36 php-fpm: pool www 
nobody 30670 0.0 0.9 2923280 19020 ?  S Dec27 0:35 php-fpm: pool www 
nobody 31239 0.0 0.9 2920428 19856 ?  S Dec27 0:36 php-fpm: pool www 
root  71753 0.0 0.1 12512 2340 pts/1 S+ 10:49 0:00 grep --color=auto fpm 
yxr ~ # pkill php-fpm 
yxr ~ # php-fpm                         
yxr ~ # ps aux|grep php-fpm 
root  71764 0.0 0.4 143416 9920 ?  Ss 10:50 0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf) 
nobody 71765 0.0 0.4 143416 8380 ?  S 10:50 0:00 php-fpm: pool www 
nobody 71766 0.0 0.5 143480 11256 ?  S 10:50 0:00 php-fpm: pool www 
root  71776 0.0 0.1 12512 2312 pts/1 S+ 10:51 0:00 grep --color=auto php-fpm