PHP detectează erori de nivel FATAL

Referință oficială

Site oficial set_error_handler register_shutdown_function

Cum să prinzi perfect toate erorile

set_error_handler poate fi utilizat pentru a captura majoritatea tipurilor de erori. Când se întâlnește o eroare de nivel FATAL, deoarece PHP termină direct operațiunea, funcția de apel invers setată de set_error_handler nu poate fi declanșată. În acest moment, trebuie să folosim register_shutdown_function pentru a seta funcția de apel invers pentru terminarea programului. Trebuie remarcat faptul că apelul de apel setat de register_shutdown_function este executat după terminarea programului, indiferent dacă există o eroare în proces. Deci, în acest apel invers, trebuie să determinăm, de asemenea, dacă a apărut o eroare și, dacă a apărut o eroare, o vom înregistra în jurnal. Pentru detalii, vă rugăm să consultați următorul cod.

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