致命的な PHP (E_ERROR) エラーの処理
問題:
致命的なエラーが発生した場合PHP スクリプト内で (存在しない関数の呼び出しなど)、次のコマンドを使用してエラーを捕捉することはできません。 set_error_handler() 関数。これらの重大なエラーはどのように処理できますか?
解決策:
PHP 5.2 で致命的なエラーを検出するには、 register_shutdown_function() 関数を利用します:
register_shutdown_function("fatal_handler"); function fatal_handler() { $errfile = "unknown file"; $errstr = "shutdown"; $errno = E_CORE_ERROR; $errline = 0; $error = error_get_last(); if ($error !== NULL) { $errno = $error["type"]; $errfile = $error["file"]; $errline = $error["line"]; $errstr = $error["message"]; error_mail(format_error($errno, $errstr, $errfile, $errline)); } }
error_mail() 関数と format_error() 関数を実装する必要があります。インスタンス:
function format_error($errno, $errstr, $errfile, $errline) { $trace = print_r(debug_backtrace(false), true); $content = " <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() 関数を定義します。
追加リソース:
以上がPHP 5.2 で致命的な PHP エラー (E_ERROR) を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。