通常、PHP は致命的なエラーを直接出力し、開発者が問題を簡単に特定できるように、エラーの原因 (ファイル アドレス、行番号) と理由などを出力します。ただし、php.ini 設定またはサードパーティのフレームワーク構成の問題により、この情報が出力されない場合があります。このとき、問題を迅速に特定できるように、関連するパラメーターを自分で設定し、これらのエラー メッセージを出力する方法を学習する必要があります。
error_reporting は、php.ini の php グローバル構成パラメーターです。エラー出力レベルを設定するために使用され、エラー出力のレベルを設定するために使用できます。
error_reporting(int $level)、$level が 0 の場合、エラー出力はオフになります。つまり、エラーは出力されません。
set_error_handler
phpのデフォルトのエラー処理は、メッセージを出力することです。ただし、他の操作を定義する必要がある場合もあります。その場合は、エラー処理関数をカスタマイズする必要があります。
php は、独自のエラー処理関数を登録するのに役立つ組み込み関数 set_error_handler を提供します。関数のプロトタイプは次のとおりです:
mixed set_error_handler ( callback $error_handler [, int $error_types = E_ALL | E_STRICT ] )
エラー処理関数が登録されている場合でも、デフォルトの動作が引き続き実行されることに注意してください。つまり、エラーが発生してもエラー メッセージが出力されるため、プログラム内で明示的にエラー レベルを 0 に設定し、独自のエラー処理関数を登録する必要があります。このアプローチは、実稼働環境では特に重要です。これは、何か問題が発生した場合でも、機密の内部エラー情報が潜在的に悪意のあるユーザーに公開されることがないためです。カスタム エラー処理関数は致命的なエラー (コンパイル エラーなど) を処理できないことを指摘することも重要です。
以下はカスタム エラー処理関数の使用例です:
<?php error_reporting(0); function error_handler($error_level, $error_message, $file, $line) { $exit = false; switch ($error_level) { case E_NOTICE: case E_USER_NOTICE: $error_type = 'Notice'; break; case E_WARNING: case E_USER_WARNING: $error_type = 'Warning'; break; case E_ERROR: case E_USER_ERROR: $error_type = 'Fatal Error'; $exit = true; break; default: $error_type = 'Unknown'; $exit = true; break; } printf("%s: %s in %s on line %d\n", $error_type, $error_message, $file, $line); if ($exit) { die(); } } set_error_handler('error_handler');
echo $novar;
echo 3 / 0;
trigger_error('Trigger a Fatal error', E_USER_ERROR);
new NonExist();
Executeこのスクリプトは次の出力を取得できます:
注意: 未定義の変数: /your/php_demo_file.php の 40 行目の novar
警告: /your/php_demo_file.php の 41 行目でのゼロによる除算
致命的なエラー: トリガー/your/php_demo_file.php の 42 行目に致命的なエラーがありました
最後の "new NoExistClass()" 例外がカスタム エラー処理関数によってキャッチされなかったことがわかります。
最後に、set_Exception_handler は、Web アプリケーションでトップレベルの例外処理を登録し、それを設定して、一律にエラー処理ページにジャンプすることができます。
上記は PHP のカスタム エラー処理の例です。皆様のお役に立てれば幸いです。
関連おすすめ:
以上がPHPカスタムエラー処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。