PHP captura erros de nível FATAL

Referência oficial

Website oficial set_error_handler register_shutdown_function

Como capturar todos os erros perfeitamente

set_error_handler pode ser usado para capturar a maioria dos tipos de erro.Quando um erro de nível FATAL é encontrado, porque o PHP diretamente termina a operação, a função de retorno de chamada definida por set_error_handler não pode ser disparada. Neste momento, precisamos usar register_shutdown_function para definir a função de retorno de chamada para o encerramento do programa. Deve-se observar que o callback definido por register_shutdown_function é executado após o término do programa, independentemente de haver um erro no processo. Portanto, neste retorno de chamada, também precisamos determinar se ocorreu um erro e, se ocorreu um erro, iremos registrá-lo no log. Para obter detalhes, consulte o código a seguir.

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