PHP CLI 不使用 stderr 来输出错误

2022-08-30 21:57:49

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

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

  • 如果文件类型不是纯文本,则设置为 。stdout?
  • 如果文件是出现错误的 php 脚本,则错误消息仍会打印到 。stdout

是否有切换到解释器来处理错误?除了解析之外,我还可以选择检测错误吗?stderrstdout


答案 1

display_errors 指令(可以在任何地方设置)可选择采用参数 “”,以便它向 stderr 报告错误,而不是 stdout 或完全禁用的错误输出。引用 PHP 手册条目:stderr

“stderr”将错误发送到 stderr 而不是 stdout。该值从 PHP 5.2.4 开始可用。

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

fwrite(STDERR, 'error message');

这是一个已经打开的流到stderrSTDERR

或者,如果您只想为此脚本执行此操作,而不是在CLI中执行此操作,则可以打开一个归档处理程序并在那里编写错误消息。php://stderr

$fe = fopen('php://stderr', 'w');
fwrite($fe, 'error message');

答案 2

如果希望 php 解释器发送的错误消息应该转到 -pipe,则必须将 display_errors 设置为stderrstderr


推荐