Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Menangkap dan Mengendalikan Ralat PHP Fatal (E_ERROR) Menggunakan `register_shutdown_function()`?

Bagaimanakah Saya Boleh Menangkap dan Mengendalikan Ralat PHP Fatal (E_ERROR) Menggunakan `register_shutdown_function()`?

DDD
Lepaskan: 2024-12-29 08:02:17
asal
199 orang telah melayarinya

How Can I Catch and Handle Fatal PHP Errors (E_ERROR) Using `register_shutdown_function()`?

Menangkap Ralat PHP Fatal (E_ERROR)

Masalah:

Walaupun fungsi set_error_handler() berkesan untuk menangkap kebanyakan Ralat PHP, ia gagal menangani ralat maut, seperti panggilan tidak wujud fungsi. Ini menyebabkan pembangun mencari kaedah alternatif untuk menangkap ralat kritikal ini.

Penyelesaian:

PHP 5.2 menyediakan fungsi register_shutdown_function() yang membolehkan menangkap ralat maut. Berikut ialah pelaksanaan untuk menghantar e-mel ralat apabila menghadapi ralat sedemikian:

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));
    }
}
Salin selepas log masuk

Fungsi Sokongan:

Tentukan fungsi sokongan yang diperlukan, seperti format_error dan error_mail. Fungsi format_error boleh mengembalikan maklumat ralat dalam format jadual:

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
$errno
File$errfile Line$errline Trace
$trace
HTML; return $content; }
Salin selepas log masuk

Gunakan perpustakaan Swift Mailer untuk melaksanakan fungsi error_mail.

Tambahan Sumber:

  • [$php_errormsg](https://www.php.net/manual/en/reserved.variables.errormsg.php)
  • [Dipratentukan Pemalar](https://www.php.net/manual/en/language.constants.predefined.php)

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangkap dan Mengendalikan Ralat PHP Fatal (E_ERROR) Menggunakan `register_shutdown_function()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan