当从web访问时,php exec返回空输出

时间:2016-12-29 07:19:52

标签: php exec

我有一个像这样的简单的PHP脚本

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

在命令行执行它,它会发出

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

但是当我将它放在Web服务器文档目录下并从浏览器访问它时会显示

Array ( )

我使用nginx + phpfpm,服务器配置是正确的。

如您所见,我将错误从stderr重定向到stdout。而且,return_var是-1

所以问题是,为什么它在从浏览器访问时返回空,而在命令行执行时是正常的。

感谢。

1 个答案:

答案 0 :(得分: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