PHP detecta erros de nivel FATAL
Referencia oficial
Páxina web oficial set_error_handler register_shutdown_functionComo detectar perfectamente todos os erros
pódese usar set_error_handler para capturar a maioría dos tipos de erro. Cando se produce un erro de nivel FATAL, porque PHP pon fin á operación directamente, a función de devolución de chamada establecida por set_error_handler non se pode desencadear. Neste momento, necesitamos usar register_shutdown_function para establecer a función de devolución de chamada para a terminación do programa. Cómpre ter en conta que a devolución de chamada establecida por register_shutdown_function execútase unha vez finalizado o programa, independentemente de que haxa un erro no proceso. Entón, nesta devolución de chamada, tamén necesitamos determinar se se produciu un erro e, se se produciu un erro, gravarémolo no rexistro. Para máis detalles, consulte o seguinte código.
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);
}