我有一个像这样的简单的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
。
所以问题是,为什么它在从浏览器访问时返回空,而在命令行执行时是正常的。
感谢。
答案 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