error_reporting() と @エラー制御演算子
ちょっと勘違いをしてた。
error_reporting を 0 にしてもファイル出力に対するエラーは行われるものと思い込んでた。
PHP: set_error_handler - Manual
所々に書いてあるが、分かり難い・・。
実際はerror_reportingを0にするとerror_logで指定したログファイルにも何も記述されない。
ということで自分でエラーハンドラを作る場合は
function myError($level, $msg, $file = null, $line = null, $text = null){ if (error_reporting() === 0) return; switch ($level){ case E_WARNING: .... } } set_error_handler('myError'); error_reporting(E_ALL); ini_set('log_errors', 'On'); ini_set('error_log', 'error.log'); // エラーのテスト $a = $a; $b = @$b;
みたいにerror_reporting()を初めにチェックしないと自分の知らないところにある@演算子で思わぬエラーを表示してしまうことがある。