シャットダウン関数の登録による PHP 致命的エラーの捕捉
問題:
set_error_handler() が処理できる間ほとんどの PHP エラーでは、致命的なエラー (E_ERROR) をキャプチャできません。存在しない関数の呼び出しによって引き起こされるエラーなど。
解決策:
PHP 5.2 では、致命的なエラーをログに記録できる register_shutdown_function が導入されています。
register_shutdown_function("fatal_handler"); function fatal_handler() { // Capture error information $error = error_get_last(); if ($error) { error_mail(format_error( $error["type"], $error["message"], $error["file"], $error["line"] )); } }
定義エラーをフォーマットする format_error 関数情報:
function format_error($errno, $errstr, $errfile, $errline) { // Generate the error trace $trace = print_r(debug_backtrace(false), true); // Format the error information $content = <<<HTML <table border="1"> <thead> <th>Item</th> <th>Description</th> <thead> <tbody> <tr> <td>Error</td> <td><pre class="brush:php;toolbar:false">$errstr
$errno
$trace
メール機能を処理するには、error_mail 関数を定義し、Swift Mailer などのライブラリの使用を検討してください。
追加リソース:
以上がregister_shutdown_function を使用して致命的な PHP エラーを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。