PHP CLI 不使用 stderr 来输出错误
我在MacOS中通过NSTask运行PHP CLI,但这个问题更多的是关于CLI本身。
我正在听管道,但无论我尝试运行什么文件,都没有输出:stderr
- 如果文件类型不是纯文本,则设置为 。
stdout
?
- 如果文件是出现错误的 php 脚本,则错误消息仍会打印到 。
stdout
是否有切换到解释器来处理错误?除了解析之外,我还可以选择检测错误吗?stderr
stdout
我在MacOS中通过NSTask运行PHP CLI,但这个问题更多的是关于CLI本身。
我正在听管道,但无论我尝试运行什么文件,都没有输出:stderr
stdout
?
stdout
是否有切换到解释器来处理错误?除了解析之外,我还可以选择检测错误吗?stderr
stdout
display_errors
指令(可以在任何地方设置)可选择采用参数 “”,以便它向 stderr 报告错误,而不是 stdout 或完全禁用的错误输出。引用 PHP 手册条目:stderr
值“stderr”将错误发送到 stderr 而不是 stdout。该值从 PHP 5.2.4 开始可用。
或者,如果您使用的是命令行界面,并且想要输出自己的错误,则可以重用命令行 nput/输出流:
fwrite(STDERR, 'error message');
这是一个已经打开的流到stderr。STDERR
或者,如果您只想为此脚本执行此操作,而不是在CLI中执行此操作,则可以打开一个归档处理程序并在那里编写错误消息。php://stderr
$fe = fopen('php://stderr', 'w');
fwrite($fe, 'error message');