PHP CLI不使用stderr输出错误

Pet*_*uza 14 php stdout stderr nstask

我正在通过MacOS中的NSTask运行PHP CLI,但这个问题更多的是关于CLI本身.

我正在听stderr管道,但无论我尝试运行什么文件,都没有输出:

  • 如果文件类型不是纯文本,请stdout设置为?.
  • 如果该文件是一个错误的PHP脚本,仍然会打印错误消息stdout.

是否有转换到解释器来处理错误stderr?我是否可以选择检测解析以外的错误stdout

mhi*_*tza 19

display_errors指令(可以在任何地方设置)可选地使用参数" stderr"来向stderr报告错误而不是stdout或完全禁用错误输出.引用PHP手册条目:

"stderr"将错误发送到stderr而不是stdout.该值从PHP 5.2.4开始提供.

或者,如果您使用命令行界面并且想要输出自己的错误,则可以重新使用命令行输入/输出流:

fwrite(STDERR, 'error message');
Run Code Online (Sandbox Code Playgroud)

STDERR是一个已经打开的stderr流.

或者,如果您只想为此脚本而不是在CLI中执行此操作,则可以打开文件处理程序php://stderr并在其中写入错误消息.

$fe = fopen('php://stderr', 'w');
fwrite($fe, 'error message');
Run Code Online (Sandbox Code Playgroud)


Kin*_*nch 9

如果您希望php解释器发送的错误消息应该转到stderr-pipe,则必须设置display_errorsstderr