PHP detecta errores de nivel FATAL

Referencia oficial

Página web oficial set_error_handler register_shutdown_function

Cómo detectar todos los errores a la perfección

set_error_handler se puede usar para capturar la mayoría de los tipos de error.Cuando se encuentra un error de nivel FATAL, debido a que PHP termina directamente la operación, la función de devolución de llamada establecida por set_error_handler no se puede activar. En este momento, necesitamos usar register_shutdown_function para configurar la función de devolución de llamada para la terminación del programa. Cabe señalar que la devolución de llamada establecida por register_shutdown_function se ejecuta después de que finaliza el programa, independientemente de si hay un error en el proceso. Entonces, en esta devolución de llamada, también debemos determinar si se ha producido un error y, si se ha producido un error, lo registraremos en el registro. Para obtener más información, consulte el siguiente código.

            set_error_handler('exception_handler');
register_shutdown_function('shutdown_handler');
function exception_handler($err_no, $err_str, $err_file, $err_line)
{
    error_reporting(0);
    // save error log
    // ...
    error_reporting(E_ALL);
}
function shutdown_handler()
{
    $error = error_get_last();
    if (empty($error)) {
        return;
    }
    error_reporting(0);
    // save error log
    // ...
    error_reporting(E_ALL);
}