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
166 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!

sumber:php.cn
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