Directives PHP à configurer et valeurs par environnement
Le fichier php.ini contient la directive error_reporting qui définie quels types d’erreurs doivent être signalés ou ignorés. Cette directive peut être modifiée pour chaque vhost ou dans un script via un appel à la fonction error_reporting().
Dans un environnement de développement, la directive error_reporting doit avoir la valeur E_ALL car cela permet d’être informé de tous les problèmes détectés par PHP et d’éviter de surcharger les fichiers de logs ultérieurement en production. En production en revanche, on baissera le niveau pour être moins verbeux dans les erreurs et pour ne pas journaliser des erreurs sans grande importance. On indiquera donc par exemple la valeur E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED. Cela signifie «Tout afficher sauf le type notice, le type strict, et le type deprecated ».
Une autre directive, display_errors, détermine si le message d’erreur doit être affiché dans la sortie du script. C’est très utile dans un environnement de développement mais devrait toujours être désactivé dans un environnement de production. La raison est qu’un message d’erreur peut contenir des informations sensibles comme des mots de passe.
Enfin, la directive log_errors peut être activée afin que PHP enregistre toutes les erreurs dans le fichier spécifié par la directive error_log. Dans un environnement de développement, les erreurs sont affichées à l’écran, mais dans le cas d’un appel à un service web par exemple, on n’a pas forcément d’affichage, cela peut donc s’avérer utile. Mais c’est surtout en production que cela s’avérera fortement utile car les messages d’erreurs ne sont pas affichés.
Types d’erreurs
| Valeur | Constantes | Description |
|---|---|---|
| 1 | E_ERROR | 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. |
| 2 | E_WARNING | 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. |
| 4 | E_PARSE | 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. |
| 8 | E_NOTICE | 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. |
| 16 | E_CORE_ERROR | 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. |
| 32 | E_CORE_WARNING | 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. |
| 64 | E_COMPILE_ERROR | 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. |
| 128 | E_COMPILE_WARNING | 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. |
| 256 | E_USER_ERROR | 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 fonction trigger_error(). Les fonctions de PHP ne doivent pas générer ce genre d’erreur. |
| 512 | E_USER_WARNING | 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 fonction trigger_error(). Les fonctions de PHP ne doivent pas générer ce genre d’erreur. |
| 1024 | E_USER_NOTICE | 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 fonction trigger_error(). Les fonctions de PHP ne doivent pas générer ce genre d’erreur. |
| 2048 | E_STRICT | Permet d’obtenir des suggestions de PHP pour modifier votre code, assurant ainsi une meilleure interopérabilité et compatibilité de celui-ci. Pas inclus dans E_ALL. |
| 4096 | E_RECOVERABLE_ERROR | 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. |
| 8192 | E_DEPRECATED | 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. |
| 16384 | E_USER_DEPRECATED | 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(). |
| 32767 | E_ALL | Toutes les erreurs et alertes supportées sauf le niveau E_STRICT avant la version 5.4.0 de PHP. |