PHP wyłapuje błędy poziomu FATAL
Oficjalne odniesienie
Oficjalna strona internetowa set_error_handler register_shutdown_functionJak doskonale wyłapać wszystkie błędy
set_error_handler może służyć do przechwytywania większości typów błędów.Gdy napotkany zostanie błąd poziomu FATAL, ponieważ PHP bezpośrednio kończy operację, funkcja wywołania zwrotnego ustawiona przez set_error_handler nie może zostać wyzwolona. W tej chwili musimy użyć register_shutdown_function, aby ustawić funkcję wywołania zwrotnego na zakończenie programu. Należy zauważyć, że wywołanie zwrotne ustawione przez register_shutdown_function jest wykonywane po zakończeniu programu, niezależnie od tego, czy w procesie wystąpił błąd. Dlatego w tym wywołaniu zwrotnym musimy również określić, czy wystąpił błąd, a jeśli wystąpił błąd, zapiszemy go w dzienniku. Aby uzyskać szczegółowe informacje, zapoznaj się z poniższym kodem.
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);
}