Effectuer des erreurs fatales en PHP en utilisant register_shutdown_fonction()

Mots clés : phperror-handlingfatal-errorphp

meilleur 3 Réponses Effectuer des erreurs fatales en PHP en utilisant register_shutdown_fonction()

vote vote

97

function shutdown() {     $error = error_get_last();     if ($error['type'] === E_ERROR) {         // fatal error has occured     } }  register_shutdown_function('shutdown');  spl_autoload_register('foo');  // throws a LogicException which is not caught, so triggers a E_ERROR 
vote vote

88

function fatal_error() { if ( ! defined(PROGRAM_EXECUTION_SUCCESSFUL)) {         // fatal error has occurred     } }  register_shutdown_function('fatal_error');  define('PROGRAM_EXECUTION_SUCCESSFUL', true); 
vote vote

80

<?php register_shutdown_function('__fatalHandler'); function __fatalHandler() {     $error      = error_get_last();      //check if it's a core/fatal error, otherwise it's a normal shutdown     if($error !== NULL && $error['type'] === E_ERROR) {         //Bit hackish, but the set_exception_handler will return the old handler         function fakeHandler() { }         $handler = set_exception_handler('fakeHandler');         restore_exception_handler();         if($handler !== null) {              call_user_func($handler, new ErrorException($error['message'], $error['type'], 0, $error['file'], $error['line']));         }         exit;     } } ?> 
<?php ini_set('display_errors', false); ?> 

Questions similaires