Déc
21
2010

Filtrer les erreurs php – Error_reporting


Il est parfois nécessaire de filtrer les erreurs pour ne pas polluer les fichiers log de données récurrentes et non nécessaire.

Par exemple, les erreurs Deprecated :

[Mon Dec 20 16:09:36 2010] [error] [client 192.168.0.1] PHP Deprecated:  Function ereg_replace() is deprecated in

Cette erreur nous indique que l’application PHP utilise une fonction qui est en train de disparaitre.  C’est très bien de le savoir lorsqu’on développe. Mais pour débugger, c’est l’enfer.

Heureusement, php a prévu le coup. Dans php.ini, il y a un champ nommé “error_reporting” initialisé par défaut sur E_ALL ( Toutes les erreurs).

 

Voici la valeur de error_reporting dans le cas où nous voulons tous les logs sauf les messages E_Notice et E_DEPRECATED :

error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE

Le ~ représente la négation.

 

Nous pouvons faire la même chose directement dans l’application avec la fonction :

int error_reporting ([ int $level ] )

exemple :

error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);

le ^ représente la négation.

 

Les différents niveaux d’erreur :

Le type d’une erreur est représenté par une constante PHP.

Valeur : 1  Constante : E_ERROR (entier)

Les erreurs sont aussi affichées par défaut, et l’exécution du script est interrompue. Elles indiquent des erreurs qui ne peuvent pas être ignorées, comme des problèmes d’allocation de mémoire, par exemple.

Valeur : 2 Constante : E_WARNING (entier)

Les alertes sont affichées par défaut, mais n’interrompent pas l’exécution du script. Elles indiquent un problème qui doit être intercepté par le script durant l’exécution du script. Par exemple, appeler ereg() avec une expression rationnelle invalide.

Valeur : 4 Constante : E_PARSE (entier)

Les erreurs d’analyse ne doivent être générées que par l’analyseur. Elles ne sont citées ici que dans le but d’être exhaustif.

Valeur : 8 Constante : E_NOTICE (entier)

Les remarques ne sont pas affichées par défaut, et indiquent que le script a rencontré quelque chose qui peut être une erreur, mais peut aussi être un événement normal dans la vie du script. Par exemple, essayer d’accéder à une valeur qui n’a pas été déclarée, ou appeler stat() sur un fichier qui n’existe pas.

Valeur : 16 Constante : E_CORE_ERROR(entier)

Elles sont similaires aux erreurs E_ERROR, mais elles sont générées par le code source de PHP. Les fonctions ne doivent pas générer ce genre d’erreur.

Valeur : 32 Constante : E_CORE_WARNING(entier)

Elles sont similaires à E_WARNING, mais elles sont générées par le code source de PHP. Les fonctions ne doivent pas générer ce genre d’erreur.

Valeur : 64 Constante : E_COMPILE_ERROR(entier)

Elles sont similaires à E_ERROR, mais elles sont générées par le moteur Zend. Les fonctions ne doivent pas générer ce genre d’erreur.

Valeur : 128 Constante : E_COMPILE_WARNING(entier)

Elles sont similaires à E_WARNING, mais elles sont générées par le moteur Zend. Les fonctions ne doivent pas générer ce genre d’erreur.

Valeur : 256 Constante : E_USER_ERROR(entier)

Message d’erreur généré par l’utilisateur. Comparable à E_ERROR. Elle est générée par le programmeur en PHP par l’utilisation de la fonctiontrigger_error(). Les fonctions de PHP ne doivent pas générer ce genre d’erreur.

Valeur : 512 Constante : E_USER_WARNING(entier)

Message d’erreur généré par l’utilisateur. Comparable à E_WARNING. Elle est générée par le programmeur en PHP par l’utilisation de la fonctiontrigger_error(). Les fonctions de PHP ne doivent pas générer ce genre d’erreur.

Valeur : 1024 Constante : E_USER_NOTICE(entier)

Message d’erreur généré par l’utilisateur. Comparable à E_NOTICE. Elle est générée par le programmeur en PHP par l’utilisation de la fonctiontrigger_error(). Les fonctions de PHP ne doivent pas générer ce genre d’erreur.

Valeur : 2048 Constante : E_STRICT (entier)

Permet d’obtenir des suggestions de PHP pour modifier votre code, assurant ainsi une meilleure interopérabilité et compatibilité de celui-ci.

Depuis PHP 5

Valeur : 4096 Constante : E_RECOVERABLE_ERROR(entier)

Erreur fatale qui peut être captée. Ceci indique qu’une erreur probablement dangereuse s’est produite, mais n’a pas laissé le moteur Zend dans un état instable. Si l’erreur n’est pas attrapée par un gestionnaire d’erreur défini par l’utilisateur (voyez aussi set_error_handler(), l’application arrête prématurément comme si cela était une E_ERROR.

Depuis PHP 5.2.0

Valeur : 8192 Constante : E_DEPRECATED(entier)

Alertes d’exécution. Activer cette option pour recevoir des alertes sur les portions de votre code qui pourraient ne pas fonctionner avec les futures versions.

Depuis PHP 5.3.0

Valeur : 16384 Constante : E_USER_DEPRECATED(entier)

Message d’alerte généré par l’utilisateur. Fonctionne de la même façon que E_DEPRECATED, mise à part que le message est généré par votre code PHP en utilisant la fonction trigger_error().

Depuis PHP 5.3.0

Valeur : 30719 Constante : E_ALL (entier)

Toutes les erreurs et alertes supportées sauf le niveau E_STRICT.

30719 en PHP 5.3.x, 6143 en PHP 5.2.x, et 2047 auparavant

Articles similaires

Au sujet de l'auteur: Olivier Legras

Auteur de ce Blog, je partage quelques unes de mes notes que je juge utile à vous comme à moi. Je suis très heureux de voir que mon blog a de plus en plus d'affluence. Merci à vous!

1 Comment + Add Comment

Laissez un commentaire