我正在通过NSTask在MacOS中运行PHP,但是这个问题更多地是关于CLI本身的。
我正在监听stderr管道,但是不管我试图运行哪个文件,都没有输出:
stdout将设置为?。stdout中。是否切换到解释器以通过stderr处理错误?除了解析stdout之外,我还有其他检测错误的选项吗?
发布于 2011-06-22 23:08:44
指令 (可以在任何地方设置)可以选择参数"stderr“来向stderr报告错误,而不是stdout或完全禁用错误输出。引用PHP手册条目:
值" stderr“将错误发送给stderr而不是stdout。该值在PHP5.2.4中可用。
或者,如果您使用命令行接口,并且希望输出您自己的错误,则可以重用命令行nput/输出流。
fwrite(STDERR, 'error message');这里,STDERR是一个已经打开的到stderr的流。
或者,如果您只想为这个脚本而不是在CLI中这样做,您可以打开一个到php://stderr的文件处理程序,并在那里编写错误消息。
$fe = fopen('php://stderr', 'w');
fwrite($fe, 'error message');发布于 2011-06-22 23:06:43
如果希望php解释器发送的错误消息转到stderr-pipe,则必须将display_errors设置为stderr。
发布于 2016-06-16 08:51:51
这是从PHP领域返回到shell环境以正确解析错误消息所必需的。您仍然需要退出(1)或任何整数,才能将退出状态代码从PHP返回到shell。
fwrite(STDERR, 'error message'); //output message into 2> buffer
exit(0x0a); //return error status code to shell 然后,您的crontab条目如下所示:
30 3 * * * /usr/bin/php /full/path/to/phpFile.php >> /logdir/fullpath/journal.log 2>> /logdir/fullpath/error_journal.loghttps://stackoverflow.com/questions/6447567
复制相似问题