begin process at 2012 02 09 11:43:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > GESTION DES ERREURS

GESTION DES ERREURS


 Information sur la source

Note :
9,25 / 10 - par 4 personnes
9,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :erreurs, log, loggage, warning, error Niveau :Initié Date de création :14/10/2004 Date de mise à jour :29/11/2005 15:21:38 Vu / téléchargé :4 841 / 205

Auteur : Samiby

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Ce code enregistre les erreurs PHP rencontrées dans un fichier, stoppe le script si ces erreurs sont trop importante, et enregistre la date où l'erreur s'est produite la dernière fois.

Source

  • <?php
  • //Fonction qui reçoit les erreurs en argument
  • function erreurphp( $errno , $errmsg , $errfichier , $errligne , $errcontext ){
  • $date = date( 'd/m/Y H:i:s' );
  • switch( $errno ){
  • //Si l'erreur est assez importante et nécessite l'arrêt du script :
  • case 1:
  • case 16:
  • case 64:
  • case 256:
  • //On marque l'erreur
  • ecrire_fichier( "[" . $date . "] -- [ " . $errno . " ] E_ERROR : " . $errmsg . " --- fichier : '" . $errfichier . "' --- Ligne : " . $errligne );
  • //Et on arrête le script
  • die( '<b><span style="color: #FF0000;">Erreur</span></b> : Rééssayez plus tard.' );
  • //Sinon, si l'erreur est moindre, mais assez importante tout de même
  • case 2:
  • case 4:
  • case 32:
  • case 128:
  • case 512:
  • //On écrit l'erreur
  • ecrire_fichier( "[" . $date . "] -- [" . $errno . "] E_WARNING : " . $errmsg . " --- fichier : '" . $errfichier . "' --- Ligne : " . $errligne );
  • break;
  • //Sinon, si c'est juste un 'Notice' (avertissement)
  • case 8:
  • case 1024:
  • ecrire_fichier( "[" . $date . "] -- [" . $errno . "] E_NOTICE : " . $errmsg . " --- fichier : '" . $errfichier . "' --- Ligne : " . $errligne );
  • break;
  • }
  • }
  • //toutes les erreurs doivent être reportées
  • error_reporting( E_ALL );
  • //Quand on rencontre une erreur, on appelle la fonction erreurphp()
  • $error_handler = set_error_handler("erreurphp");
  • //La fonction qui écrit dans le fichier
  • function ecrire_fichier( $msg ){
  • //Vous pouvez renommer ce fichier comme vous voulez, il est conseillé de le mettre dans un répertoire innaccessible depuis HTTP (accessible seulement par FTP et PHP)
  • $fichier = "error.log";
  • //si le fichier n'existe pas
  • if( !file_exists( $fichier ) ) {
  • //on l'ouvre en mode 'création'
  • $mode = 'x+';
  • // $msg contient ce qui sera écrit en plus dans le fichier
  • $msg .= "\n";
  • //Sinon (si il existe)
  • } else {
  • //on l'ouvre en mode 'écriture'
  • $mode = 'a+';
  • //On récupère le contenu du fichier
  • $contenu = file_get_contents( $fichier );
  • //On récupère le message d'erreur en enlevant la date
  • $message = substr( $msg , strpos( $msg , ']' ) + 5 );
  • //Si le message d'erreur existe déjà dans le fichier
  • if( ereg( "\[[0-9]{2}\/[0-9]{2}\/[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2}\] -- " . preg_quote( $message ) , $contenu , $regs ) ) {
  • //On remplace le message d'erreur du fichier par notre message d'erreur, avec la date actuelle
  • $msg = ereg_replace( preg_quote( $regs[0] ) , $msg , $contenu );
  • //on décide d'ouvrir le fichier en 'remise à zéro', car on a remplacé ce qu'il fallait.
  • $mode = 'w';
  • } else {
  • $msg .= "\n";
  • }
  • }
  • //On ouvre le fichier avec le mode choisi
  • $fp = fopen( $fichier , $mode );
  • //On écrit le message
  • fwrite( $fp , $msg );
  • //On ferme le fichier
  • fclose( $fp );
  • }
  • ?>
<?php 
//Fonction qui reçoit les erreurs en argument
function erreurphp( $errno , $errmsg , $errfichier , $errligne , $errcontext ){
	$date = date( 'd/m/Y H:i:s' );
	switch( $errno ){
		//Si l'erreur est assez importante et nécessite l'arrêt du script :
		case 1:
		case 16:
		case 64:
		case 256:
			//On marque l'erreur
			ecrire_fichier( "[" . $date . "] -- [ " . $errno . " ] E_ERROR : " . $errmsg . " --- fichier : '" . $errfichier . "' --- Ligne : " . $errligne );
			//Et on arrête le script
			die( '<b><span style="color: #FF0000;">Erreur</span></b> : Rééssayez plus tard.' );
		//Sinon, si l'erreur est moindre, mais assez importante tout de même
		case 2:
		case 4:
		case 32:
		case 128:
		case 512:
			//On écrit l'erreur
			ecrire_fichier( "[" . $date . "] -- [" . $errno . "] E_WARNING : " . $errmsg . " --- fichier : '" . $errfichier . "' --- Ligne : " . $errligne );
			break;
		//Sinon, si c'est juste un 'Notice' (avertissement)
		case 8:
		case 1024:
				ecrire_fichier( "[" . $date . "] -- [" . $errno . "] E_NOTICE : " . $errmsg . " --- fichier : '" . $errfichier . "' --- Ligne : " . $errligne );
			break;
	}
}

//toutes les erreurs doivent être reportées
error_reporting( E_ALL );
//Quand on rencontre une erreur, on appelle la fonction erreurphp()
$error_handler = set_error_handler("erreurphp");

//La fonction qui écrit dans le fichier
function ecrire_fichier( $msg ){
	//Vous pouvez renommer ce fichier comme vous voulez, il est conseillé de le mettre dans un répertoire innaccessible depuis HTTP (accessible seulement par FTP et PHP)
	$fichier = "error.log";
	//si le fichier n'existe pas
	if( !file_exists( $fichier ) ) {
		//on l'ouvre en mode 'création'
		$mode = 'x+'; 
		// $msg contient ce qui sera écrit en plus dans le fichier
		$msg .= "\n";
	//Sinon (si il existe)
	} else {
			//on l'ouvre en mode 'écriture'
		$mode = 'a+';
		//On récupère le contenu du fichier
		$contenu = file_get_contents( $fichier );
		//On récupère le message d'erreur en enlevant la date
		$message = substr( $msg , strpos( $msg , ']' ) + 5 );
		//Si le message d'erreur existe déjà dans le fichier
		if( ereg( "\[[0-9]{2}\/[0-9]{2}\/[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2}\] -- " . preg_quote( $message ) , $contenu , $regs ) ) {
			//On remplace le message d'erreur du fichier par notre message d'erreur, avec la date actuelle
			$msg = ereg_replace( preg_quote( $regs[0] ) , $msg , $contenu );
			//on décide d'ouvrir le fichier en 'remise à zéro', car on a remplacé ce qu'il fallait.
			$mode = 'w';
		} else {
			$msg .= "\n";
		}
	}
	//On ouvre le fichier avec le mode choisi
	$fp = fopen( $fichier , $mode );
	//On écrit le message
	fwrite( $fp , $msg );
	//On ferme le fichier
	fclose( $fp );
}
?>

 Conclusion

Voilà, le code est complet.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

14 octobre 2004 21:31:54 :
Remplacement du message affiché en cas d'erreur importante.
29 novembre 2005 15:21:38 :
Ajout de mot-clés

 Sources du même auteur

Source avec Zip CLASSE POUR FORMULAIRE HTML : GÉNÉRATION ET RÉCUPÉRATION DES...
Source avec Zip BRUTEFORCE AVEC GESTION DU TIMEOUT
DOUBLE ASTUCE POUR LES LIENS & AUTRES(À PARTIR DE L'URL)
Source avec Zip REQUETE MYSQL SIMPLE AVEC SAUVEGARDE
Source avec Zip UN LIVRE D'OR SANS MYSQL, MAIS AVEC TXT

 Sources de la même categorie

Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000
Source avec Zip Source avec une capture GENERATEUR DE BOUTONS DE PARTAGES POUR RESEAUX SOCIAUX par cod57

 Sources en rapport avec celle ci

UNSERIALIZE ERROR par abdoulax
Source avec Zip Source avec une capture LOGGER LE TEMPS D'EXÉCUTION DE VOS FONCTIONS PHP par djroulo
Source avec Zip POO - LOGGING PACKAGE par Waredan
GESTION D'ERREURS par Luzy
BOT IRC : GÉNÉRATEURS DE LOGS AU FORMAT MIRC par simonviei

Commentaires et avis

Commentaire de yoman64 le 14/10/2004 21:00:30

C'Est bien comme source :-)
Mais coment on fait pour que les erreurs s'affiche pas ?
Et que les erreurs n'Arrete pas le script ? parce que php arrete le script si une erreur arrive :(

En t-k je te met 9/10

Bonne prog
++

PhPKODe.Com

Commentaire de Samiby le 14/10/2004 21:26:30

Quand le script est arrêté, c'est que l'on peut pas fairte autrement, le problème est trop grave pour continuer.
Pour addicher aucune erreur, il sufit de supprimer
" die( '<b>Erreur</b>', "Fatal error :" . $errmsg . " au fichier " . $errfichier . " à la ligne " . $errligne );"
(cf. fonction erreurphp() ).

Commentaire de DMK04 le 29/05/2007 16:31:12

Salut,

C'est exactement ce que je cherchais, sauf que j'enregistre les erreurs dans une base de données :).
Très bien commentée, j'ai compris à la première lecture. 10/10

Merci pour ton code.

++

Commentaire de franckydeluka le 20/09/2007 11:50:40

Très bien comme source ! ;-) bien commentée et sans fioriture inutiles

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Problème error_log [ par Bestgamer ] bonjour,J'ai un probl&#232;me avec la fonction error_log. J'ai fait une fonction pour g&#233;rer les messages d'erreurs mais la fonction error_log n'e erreurs [ par hnini70 ] salut je suis novice en programmation .c quelqu'un a une idée de l'erreur.je vous remercie d'avance.c une partie du programme .il m'affiche l'erreurs help ~:^/ [ par ekinoks ] Salut !bon bha voilou... g touvoir un code sur internet permétent de testé si des repertoir existe ou pas sans avoir de message d'eureur. le pt proble enviyer un courrier éléctronique ave error_log php [ par curieuse9informatique ] salut tout le monde SVP est ce que vous pouvez me montrer quelle configuration doit-on faire dans le fichier php.ini pour que la fonction error_log( Error PHP [ par Dfx4 ] Hello, Voil&#224; j'ai un probl&#232;me sur mon serveur avec Apache et PHP ! J'ai souvent cette erreur et sa me fait plant&#233; mon serveur !!!! // Parse error ......help [ par ManuAntibes ] Salut je souhaite afficher une ligne lorsque dans une liste d&#233;roulante on choisi la valeur 1.A l'ouverture de la page j'ai cette erreur:Parse err PHP Mysql: vérification si entrée déjà existante [ par nino69 ] Bonjour,Je r&#233;alise une page qui me permet de rentrer,&nbsp;&#224; l'aide d'un formulaire,&nbsp;un utilisateur.Dans l'une des rubrique &#224; remp Internal Server Error !!!! [ par djagger ] Salut !Je suis h&#233;berg&#233; chez France T&#233;l&#233;com.Je fais un truk tout con : d&#233;couper une chaine de charact&#232;re pour l'entrer da page non visible [ par goffle ] SLTQue ve dir : "Parse error: parse error, expecting `','' or `';'' in /data/members/free/multimania/fr/l/e/s/leselfestueurs/htdocs/index.php on line est ce grave ce Warning ? [ par Teclis01 ] Voil&#224; en fait je ne comprend pas pq il m'affiche "2" Warning Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,120 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales