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
Publicité :)
Articles récents
- Configuration de Nginx pour Obtenir l’IP Réelle des Visiteurs avec CloudFlare
- Récupérer les informations d’un Ordinateur Terra à partir du numéros de série avec Python
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc…
- Failed to Start File System Check – Vcenter 7
- Powershell – Se connecter à l’active directory depuis un poste windows 11
[…] Ce billet était mentionné sur Twitter par Naeh. Naeh a dit: Filtrer les erreurs php – Error_reporting – http://bit.ly/i1S1lR […]