PHP fanger FATAL-nivåfeil

Offisiell referanse

Offesiell nettside set_error_handler register_shutdown_function

Hvordan fange alle feil perfekt

set_error_handler kan brukes til å fange opp de fleste feiltyper. Når det oppstår en FATAL-nivåfeil, fordi PHP direkte avslutter operasjonen, kan ikke tilbakeringingsfunksjonen satt av set_error_handler utløses. På dette tidspunktet trenger vi å bruke register_avstengningsfunksjon for å stille inn tilbakeringingsfunksjonen for programavslutning. Det skal bemerkes at tilbakeringingen satt av register_shutdown_function utføres etter at programmet er avsluttet, uavhengig av om det er en feil i prosessen. Så i denne tilbakeringingen må vi også avgjøre om en feil har oppstått, og hvis en feil har oppstått, vil vi registrere den i loggen. For mer informasjon, se følgende kode.

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