PHP détecte les erreurs de niveau FATAL

Référence officielle

Site officiel set_error_handler register_shutdown_function

Comment attraper parfaitement toutes les erreurs

set_error_handler peut être utilisé pour capturer la plupart des types d'erreurs. Lorsqu'une erreur de niveau FATAL est rencontrée, car PHP termine directement l'opération, la fonction de rappel définie par set_error_handler ne peut pas être déclenchée. À ce stade, nous devons utiliser register_shutdown_function pour définir la fonction de rappel pour la fin du programme. Il convient de noter que le rappel défini par register_shutdown_function est exécuté après la fin du programme, qu'il y ait ou non une erreur dans le processus. Donc, dans ce rappel, nous devons également déterminer si une erreur s'est produite, et si une erreur s'est produite, nous l'enregistrerons dans le journal. Pour plus de détails, veuillez vous référer au code suivant.

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