Détection des erreurs fatales PHP via l'enregistrement d'une fonction d'arrêt
Problème :
Alors que set_error_handler() peut gérer la plupart des erreurs PHP, il ne parvient pas à capturer les erreurs fatales (E_ERROR), telles que celles provoquées par l'appel de nonexistant fonctions.
Solution :
PHP 5.2 introduit la fonction register_shutdown_function, qui permet de journaliser les erreurs fatales :
register_shutdown_function("fatal_handler"); function fatal_handler() { // Capture error information $error = error_get_last(); if ($error) { error_mail(format_error( $error["type"], $error["message"], $error["file"], $error["line"] )); } }
Définissez la fonction format_error pour formater l'erreur informations :
function format_error($errno, $errstr, $errfile, $errline) { // Generate the error trace $trace = print_r(debug_backtrace(false), true); // Format the error information $content = <<<HTML <table border="1"> <thead> <th>Item</th> <th>Description</th> <thead> <tbody> <tr> <td>Error</td> <td><pre class="brush:php;toolbar:false">$errstr
$errno
$trace
Pour gérer la fonctionnalité de mailing, définissez la fonction error_mail et envisagez d'utiliser une bibliothèque comme Swift Mailer.
Ressources supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!