ホームページ > バックエンド開発 > PHPチュートリアル > PHP 5.2 で致命的な PHP エラー (E_ERROR) を処理する方法

PHP 5.2 で致命的な PHP エラー (E_ERROR) を処理する方法

Mary-Kate Olsen
リリース: 2024-12-19 17:01:13
オリジナル
300 人が閲覧しました

How to Handle Fatal PHP Errors (E_ERROR) in PHP 5.2 ?

致命的な 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
$errno
File $errfile Line $errline Trace
$trace
"; return $content; }
ログイン後にコピー

電子メールを送信するには、Swift Mailer を使用して error_mail() 関数を定義します。

追加リソース:

  • $php_errormsg
  • 事前定義済み定数

以上がPHP 5.2 で致命的な PHP エラー (E_ERROR) を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート