Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menangkap Ralat Maut PHP Menggunakan `register_shutdown_function()`?

Bagaimanakah Saya Boleh Menangkap Ralat Maut PHP Menggunakan `register_shutdown_function()`?

Barbara Streisand
Barbara Streisandasal
2024-12-26 19:36:13826semak imbas

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

Menangkap Ralat Maut PHP

Set_error_handler() PHP sering gagal apabila cuba menangkap ralat maut (E_ERROR). Ini menjadi sangat bermasalah apabila bekerja dengan panggilan fungsi yang tidak wujud atau kejadian lain yang mencetuskan ralat maut.

Untuk mengatasi pengehadan ini, anda boleh menggunakan register_shutdown_function() PHP untuk versi 5.2 . Coretan kod berikut menunjukkan pelaksanaannya:

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));
    }
}

Untuk melengkapkan penyelesaian, tentukan fungsi error_mail dan format_error. Berikut ialah contoh:

function format_error($errno, $errstr, $errfile, $errline) {
    // Code to format and display error information goes here
}

Pertimbangkan untuk menggunakan Swift Mailer untuk fungsi error_mail.

Untuk rujukan tambahan, terokai sumber berikut:

  • $php_errormsg
  • Pemalar Dipratentukan

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

Kenyataan:
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