3

是否有一个标志或命令可用于在您在命令行上运行的单个命令上将所有 PHP 通知和警告重定向到 STDERR?

我想从命令行解析 JSON 数组,但有时我会收到来自 STDOUT 的通知和警告,导致 JSON 解析失败。

该命令如下所示:

rake collect

收集有关本地网站的一些信息是一项艰巨的任务。

4

2 回答 2

3

根据配置手册,您需要将display_errors选项设置为stderr以向 STDERR 输出警告/错误。

display_errors字符串

这决定了错误是否应该作为输出的一部分打印到屏幕上,或者是否应该对用户隐藏。

值“stderr”将错误发送到 stderr 而不是 stdout。

您可以通过以下几种方式设置此选项:

1) 全球范围内 (in php.ini)

display_errors = stderr

2)在脚本中本地ini_set()

ini_set('display_errors', 'stderr');

3)作为命令行参数(不修改任何文件)

php --define display_errors=stderr script.php
于 2017-10-10T04:00:03.060 回答
2

您将需要创建一个自定义错误处理程序。

set_error_handler (function ($errno, $errstr, $errfile, $errline)
{
        switch ($errno) {
              case E_USER_ERROR:
                   $ERROR = "CUSTOM ERROR";
                   break;
              //set cases for each error type
        }
        if($ERROR){
        $stderr = fopen('php://stderr', 'w');
        fwrite($stderr, $ERROR );
        fclose($stderr);
    }
});
于 2013-07-23T09:23:22.430 回答