PHP wyłapuje błędy poziomu FATAL

Oficjalne odniesienie

Oficjalna strona internetowa set_error_handler register_shutdown_function

Jak doskonale wyłapać wszystkie błędy

set_error_handler może służyć do przechwytywania większości typów błędów.Gdy napotkany zostanie błąd poziomu FATAL, ponieważ PHP bezpośrednio kończy operację, funkcja wywołania zwrotnego ustawiona przez set_error_handler nie może zostać wyzwolona. W tej chwili musimy użyć register_shutdown_function, aby ustawić funkcję wywołania zwrotnego na zakończenie programu. Należy zauważyć, że wywołanie zwrotne ustawione przez register_shutdown_function jest wykonywane po zakończeniu programu, niezależnie od tego, czy w procesie wystąpił błąd. Dlatego w tym wywołaniu zwrotnym musimy również określić, czy wystąpił błąd, a jeśli wystąpił błąd, zapiszemy go w dzienniku. Aby uzyskać szczegółowe informacje, zapoznaj się z poniższym kodem.

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