PHP zachycuje chyby na úrovni FATAL

Oficiální reference

Oficiální webové stránky set_error_handler register_shutdown_function

Jak dokonale zachytit všechny chyby

set_error_handler lze použít k zachycení většiny typů chyb. Když dojde k chybě na úrovni FATAL, protože PHP přímo ukončí operaci, nelze spustit funkci zpětného volání nastavenou set_error_handler. V tuto chvíli musíme použít funkci register_shutdown_function k nastavení funkce zpětného volání pro ukončení programu. Je třeba poznamenat, že zpětné volání nastavené funkcí register_shutdown_function se provede po ukončení programu, bez ohledu na to, zda v procesu došlo k chybě. Takže v tomto zpětném volání musíme také určit, zda došlo k chybě, a pokud došlo k chybě, zaznamenáme ji do protokolu. Podrobnosti najdete v následujícím kódu.

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