Gestion des erreurs fatales PHP (E_ERROR)
Problème :
Si une erreur fatale se produit dans un script PHP, comme l'appel d'une fonction inexistante, l'erreur ne peut pas être détectée à l'aide de set_error_handler() fonction. Comment pouvez-vous gérer ces erreurs critiques ?
Solution :
Pour détecter les erreurs fatales dans PHP 5.2, utilisez la fonction register_shutdown_function() :
register_shutdown_function("fatal_handler"); function fatal_handler() { $errfile = "unknown file"; $errstr = "shutdown"; $errno = E_CORE_ERROR; $errline = 0; $error = error_get_last(); if ($error !== NULL) { $errno = $error["type"]; $errfile = $error["file"]; $errline = $error["line"]; $errstr = $error["message"]; error_mail(format_error($errno, $errstr, $errfile, $errline)); } }
Vous devez implémenter les fonctions error_mail() et format_error(), par exemple exemple :
function format_error($errno, $errstr, $errfile, $errline) { $trace = print_r(debug_backtrace(false), true); $content = " <table> <thead><th>Item</th><th>Description</th></thead> <tbody> <tr> <th>Error</th> <td><pre class="brush:php;toolbar:false">$errstr
$errno
$trace
Pour envoyer des e-mails, utilisez Swift Mailer pour définir la fonction error_mail().
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!