2013-07-23 3 views
1

Есть ли флаг или команда для перенаправления всех уведомлений и предупреждений PHP в STDERR по одной команде, которую вы запускаете в командной строке?Переназначение уведомлений и предупреждений PHP от STDOUT до STDERR

Я хочу разбирать массив JSON из командной строки, но иногда я получаю уведомления и предупреждения от STDOUT, которые не выполняют разбор JSON.

Команда выглядит следующим образом:

rake collect 

Это задача грабель собрать некоторую информацию о местных сайтах.

ответ

1

Вам понадобится создать собственный обработчик ошибок.

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); 
    } 
}); 
+0

Но я использую задачу Ruby 'rake', и план состоит в том, чтобы сохранить код на стороне сервера нетронутым. – tolgap

0

Согласно configuration manual, вам необходимо установить display_errors опцию stderr для вывода предупреждений/ошибок в STDERR.

display_errors струнные

Это определяет, следует ли ошибки печататься на экране как часть выходного сигнала, или если они должны быть скрыты от пользователя.

Значение "stderr" отправляет ошибки stderr вместо stdout.

Вы можете установить эту опцию в нескольких направлениях:

1) глобально (в php.ini)

display_errors = stderr 

2) Локально в сценарии с ini_set():

ini_set('display_errors', 'stderr'); 

3) В качестве аргумента командной строки (без изменения какого-либо файла)

php --define display_errors=stderr script.php 

 Смежные вопросы

  • Нет связанных вопросов^_^