首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP不使用stderr输出错误

PHP不使用stderr输出错误
EN

Stack Overflow用户
提问于 2011-06-22 23:03:04
回答 4查看 14.7K关注 0票数 18

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

我正在监听stderr管道,但是不管我试图运行哪个文件,都没有输出:

  • 如果文件类型不是纯文本,stdout将设置为?
  • 如果该文件是一个带有错误的php脚本,则错误消息仍然打印到stdout中。

是否切换到解释器以通过stderr处理错误?除了解析stdout之外,我还有其他检测错误的选项吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-22 23:08:44

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

值" stderr“将错误发送给stderr而不是stdout。该值在PHP5.2.4中可用。

或者,如果您使用命令行接口,并且希望输出您自己的错误,则可以重用命令行nput/输出流

代码语言:javascript
复制
fwrite(STDERR, 'error message');

这里,STDERR是一个已经打开的到stderr的流。

或者,如果您只想为这个脚本而不是在CLI中这样做,您可以打开一个到php://stderr的文件处理程序,并在那里编写错误消息。

代码语言:javascript
复制
$fe = fopen('php://stderr', 'w');
fwrite($fe, 'error message');
票数 24
EN

Stack Overflow用户

发布于 2011-06-22 23:06:43

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

票数 9
EN

Stack Overflow用户

发布于 2016-06-16 08:51:51

这是从PHP领域返回到shell环境以正确解析错误消息所必需的。您仍然需要退出(1)或任何整数,才能将退出状态代码从PHP返回到shell。

代码语言:javascript
复制
fwrite(STDERR, 'error message'); //output message into 2> buffer
exit(0x0a); //return error status code to shell 

然后,您的crontab条目如下所示:

代码语言:javascript
复制
30 3 * * * /usr/bin/php /full/path/to/phpFile.php >> /logdir/fullpath/journal.log 2>> /logdir/fullpath/error_journal.log
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6447567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档