是否有標誌或命令可用於在命令行上運行的單個命令上將所有PHP通知和警告重定向到STDERR?將STDOUT的PHP通知和警告重定向到STDERR
我想從命令行解析一個JSON數組,但有時我會從STDOUT中獲得JSON解析失敗的通知和警告。
的命令如下:
rake collect
這是一個rake任務來收集有關本地網站的一些信息。
是否有標誌或命令可用於在命令行上運行的單個命令上將所有PHP通知和警告重定向到STDERR?將STDOUT的PHP通知和警告重定向到STDERR
我想從命令行解析一個JSON數組,但有時我會從STDOUT中獲得JSON解析失敗的通知和警告。
的命令如下:
rake collect
這是一個rake任務來收集有關本地網站的一些信息。
您將需要創建自定義錯誤處理程序。
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);
}
});
據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
但是我使用Ruby'rake'任務,並且計劃是保持服務器端代碼不變。 – tolgap