PHP fångar FATAL-nivåfel
Officiell referens
Officiell hemsida set_error_handler register_shutdown_functionHur man fångar alla fel perfekt
set_error_handler kan användas för att fånga de flesta feltyper. När ett FATAL-nivåfel påträffas, eftersom PHP direkt avslutar operationen, kan inte den återuppringningsfunktion som ställts in av set_error_handler utlösas. För närvarande behöver vi använda register_shutdown_function för att ställa in återuppringningsfunktionen för programavslutning. Det bör noteras att återuppringningen som ställts in av register_shutdown_function utförs efter att programmet avslutats, oavsett om det finns ett fel i processen. Så i denna återuppringning måste vi också avgöra om ett fel har inträffat, och om ett fel har inträffat registrerar vi det i loggen. Mer information finns i följande kod.
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);
}