Web-tutoriel

Tutoriels javascript css php java jquery

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

Nom (requis)

Email (requis)

Site Web

Haut