問題:
set_error_handler() 関数はほとんどの捕捉に効果的ですが、 PHP エラーでは、存在しない関数の呼び出しなどの致命的なエラーを処理できません。このため、開発者はこれらの重大なエラーをキャプチャするための代替方法を模索することになります。
解決策:
PHP 5.2 には、致命的なエラーのキャプチャを可能にする register_shutdown_function() 関数が用意されています。このようなエラーが発生したときにエラー電子メールを送信する実装は次のとおりです。
register_shutdown_function("fatal_handler"); function fatal_handler() { $error = error_get_last(); // Obtain last error if ($error !== NULL) { $errno = $error["type"]; $errfile = $error["file"]; $errline = $error["line"]; $errstr = $error["message"]; error_mail(format_error($errno, $errstr, $errfile, $errline)); } }
サポート関数:
format_error や error_mail などの必要なサポート関数を定義します。 format_error 関数は、テーブル形式でエラー情報を返すことができます。
function format_error($errno, $errstr, $errfile, $errline) { $trace = print_r(debug_backtrace(false), true); $content = <<<HTML <table> <thead><th>Item</th><th>Description</th></thead> <tbody> <tr><th>Error</th><td><pre class="brush:php;toolbar:false">$errstr
$errno
$trace
Swift Mailer ライブラリを使用して error_mail 関数を実装します。
追加リソース:
以上が「register_shutdown_function()」を使用して致命的な PHP エラー (E_ERROR) をキャッチして処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。