Personnaliser l’affichage des erreurs php avec la fonction set_error_handler 22 avril , 2010
Il existe une fonction PHP permettant de changer le fonctionnement des erreurs PHP.
Cette fonction est set_error_handler qui prend comme paramètres une fonction de callback.
En voici un exemple :
function myErrorHandler($errno, $errstr, $errfile, $errline) { switch ($errno) { case E_USER_ERROR: $mon_erreur = "<b>Mon ERREUR</b> [$errno] $errstr Fichier: $errfile Ligne: $errline"; $_SESSION['erreurs'][] = $mon_erreur; echo ($mon_erreur); exit(1); break; case E_USER_WARNING: $mon_erreur = "<b>Mon ALERTE</b> [$errno] $errstr Fichier: $errfile Ligne: $errline"; $_SESSION['erreurs'][] = $mon_erreur; break; case E_USER_NOTICE: $mon_erreur = "<b>Mon AVERTISSEMENT</b> [$errno] $errstr Fichier: $errfile Ligne: $errline"; $_SESSION['erreurs'][] = $mon_erreur; break; default: $mon_erreur = "Type d'erreur inconnu : [$errno] $errstr Fichier: $errfile Ligne: $errline"; $_SESSION['erreurs'][] = $mon_erreur; break; } /* Ne pas exécuter le gestionnaire interne de PHP */ return true; } set_error_handler("myErrorHandler"); |
On peut donc voir que la fonction appelée en « callback » ne fonctionne pas de la même manière pour une ERREUR que pour un WARNING.
Plus de détail sur la fonction set_error_handler sur le site de php :
http://php.net/manual/fr/function.set-error-handler.php
Il est ensuite possible de repasser au système standard de gestion des erreurs de PHP avec la fonction restore_error_handler()
Un exemple :
$serialized = 'foo'; set_error_handler('myErrorHandler'); $original = unserialize($serialized); restore_error_handler(); |
La documentation de restore_error_handler() :
http://www.php.net/manual/fr/function.restore-error-handler.php
Laissez une réponse