Zend\Log が次のエラー処理関数を壊しているのはなぜですか?
function error_handler($errno, $errstr, $errfile, $errline, $errcontext = null)
{
global $Logger;
$Logger->log(6 , "Error '$errstr' received.<br>");
return true;
}
$Logger = new \Zend\Log\Logger;
$Logger->addWriter(new \Zend\Log\Writer\Null);
set_error_handler('error_handler');
trigger_error('a', E_USER_ERROR);
trigger_error('b', E_USER_ERROR);
trigger_error('c', E_USER_ERROR);
trigger_error('d', E_USER_ERROR);
echo 'done.';
行 $Logger->log() を削除すると、スクリプトは期待どおりに実行されます。
終わり。
2 番目の E_USER_ERROR で終了するスクリプトのログ行をそのままにしておきます。
致命的なエラー: 37 行目の Z:\Workspace\xampp\htdocs\tests\error.php の b
同様に、エラー レベルを E_USER_WARNING に変更すると、次のようになります。
警告: 37 行目の Z:\Workspace\xampp\htdocs\tests\error.php の b
警告: c in Z:\Workspace\xampp\htdocs\tests\error.php 行 38
警告: 39 行目の Z:\Workspace\xampp\htdocs\tests\error.php の d
終わり。