2013-07-23 50 views
1

是否有標誌或命令可用於在命令行上運行的單個命令上將所有PHP通知和警告重定向到STDERR?將STDOUT的PHP通知和警告重定向到STDERR

我想從命令行解析一個JSON數組,但有時我會從STDOUT中獲得JSON解析失敗的通知和警告。

的命令如下:

rake collect 

這是一個rake任務來收集有關本地網站的一些信息。

回答

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。本地的腳本ini_set()

1)在全球範圍內(在php.ini

display_errors = stderr 

2):

您可以在幾個方面,這選項

ini_set('display_errors', 'stderr'); 

3)作爲命令行參數(不修改任何文件)

php --define display_errors=stderr script.php 
相關問題