Notification d’erreur PHP par e-mail

All contributions published for previous SPIP versions

IL s’agit ici du port assez technique d’un outil de notification au webmaster des erreurs PHP directement par email.

Qu’est ce que c’est que ça ?

Vous êtes webmaster et vous avez mis en place un site fondé sur SPIP pour quelqu’un, en faisant des choses compliquées et des fois plus ou moins catholiques au niveau du code. Vous n’allez pas tous les jours sur ce site pour voir si tout se passe bien...

Or, un jour, la personne pour qui vous avez fait le travail vous appelle en vous décrivant une erreur. Vous faites tout comme elle vous a dit, et pas moyen de reproduire l’erreur.

Il s’agit donc ici de transposer un notificateur d’erreur PHP par email, proposé chez Zend à SPIP.

Attention ce petit outil ne notifie que les erreurs PHP, et en aucun cas les erreurs HTTP (erreur 404) ni pûrement SPIP (erreur de boucle) ni même MySQL.

Qu’est ce que ça fait ?

Une fois mis en place et configuré, la bête vous envoie un petit mail à chaque erreur importante avec les informations suivantes :

-  la description de l’erreur
-  le script qui l’a causée
-  les variables d’environnement définies au moment où il y a eu erreur.

Plutôt qu’un long discours, voilà l’exemple de mail. Evidemment vous pouvez recevoir ce que vous voulez, en bidouillant un peu le code ;o)

Installation

  1. Téléchargez le fichier joint.
  2. Dézippez le fichier quelque part.
  3. Ouvrez le avec votre éditeur préféré.
  4. Editez notamment la ligne suivante en y plaçant votre email à vous. :
    $email_addr="webmaster@supersite.net"; 


  5. Selectionnez tout le code php
  6. Copiez Collez le à la fin du fichier suivant (le créer si nécessaire) : ecrire/mes_options.php

Comment ça marche

La fonction ErrorHandler définit un traitement des erreurs en fontion de leur importance. Cette fonction est systématiquement appelée à chaque erreur ou warning, grâce au code suivant :
set_error_handler('ErrorHandler');

Pour en savoir un peu plus je vous conseille la lecture de :

-  la page Zend.com d’où est tirée cette méthode.
-  la page php.net de gestion des erreurs.

Tests et compatibilité

J’utilise ce code avec succès sur deux sites :
-  www.equiterre.com.
-  www.sncc-cfecgc.org.

Et cela semble fonctionner correctement avec [1] :

SPIPPHPOK/ERREUR
1.6 4.3 ok !
1.6 4.06 ok !

Pour tester le script, c’est très simple, il suffit de déclancher une erreur. Par exemple, essayez de mettre les codes suivants dans mes_fonctions.php :
-  pour générer une erreur fatale :
trigger_error ("TEST : erreur", E_USER_ERROR);
-  pour générer un warning :
trigger_error ("TEST : erreur", E_USER_WARNING);

Le bon comportement est alors que vous ne voyez pas l’erreur affichée à l’ecran, mais vous recevez un mail avec sa description.

Footnotes

[1Hésitez pas à donner vos versions de php et/ou spip avec vos succès ou infortunes.

Avertissement : il s’agit là d’un outil de debuggage un peu avancé, si vous ne connaissez rien au php, ou peu, ça fait pas de miracle...

updated on 18 March 2004

Discussion

Une discussion

  • 1

    Bonjour ;

    Compatibilite pour la version 1.8 ?

    • aucune idée désolé, je n’ai pas encoore upgradé mes spips à 1.8. Mais je ne vois pas a priori pourquoi ça ne fonctionnerait pas

    Reply to this message

Ajouter un commentaire

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom