Le PHP rapporte des erreurs en reponse à un certaines conditions d'erreurs internes. Elles peuvent être utilisées pour signaler des causes d'erreur différentes, et peuvent être affichées à l'écran ou/et enregistrées dans l'historique
Chaque erreur générée par PHP a un type. Une liste de ces types, ainsi qu'une brève description et leur cause possible est disponible.
Si aucun gestionnaire d'erreur n'est defini, le PHP gèrera les erreurs selon
sa configuration. La directive
error_reporting
du fichier php.ini ou la fonction error_reporting() appelée
au moment de l'execution du script determineront les erreurs qui seront rapportées
et les erreurs qui seront ignorées. Il toutefois est fortement recommandé de
configurer la directive, car des erreurs peuvent se produires avant le lancement
du script.
Dans un environnement de développement, la directive
error_reporting
devrait toujours être configurée avec E_ALL
, afin que chaque
erreur PHP puisse être détéctée et corrigée.
Dans un environnement de production, il est possible de configurer la directive
avec un niveau moins verbeux tel que
E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
,
mais généralement, la directive peut etre laissée à E_ALL
pour signaler les problèmes éventuels le plus tôt possible.
Deux autres directives du fichier php.ini determinent comment le PHP traite ces erreurs.
display_errors
détermine
si le message d'erreur est affiché sur la sortie du script. Elle devrait toujours
être désactivée dans un environnement de production, car le message d'erreur peut
contenir des informations confidentielles, comme les mots de passe de base de données.
Mais, cette directive peut être activée dans un environnement de developpement,
car elle permet un affichage immédiat des erreurs
En plus d'afficher les erreurs, le PHP peut enregistrer le message d'erreur quand
la directive log_errors
est activée. Toutes les erreurs seront alors enregistrées dans le gestionnaire d'erreur
ou le fichier défini par error_log
.
Ceci est très utile dans un environnement de production, car les erreurs se produisant
seront enregistrées, et des rapports pourront être générés à partir de ces fichiers.
Si le gestionnaire d'erreur de PHP par defaut ne convient pas, beaucoup d'erreurs peuvent aussi être gérées par une fonction utilisateur en la définisant avec set_error_handler(). Bien que certains types d'erreur ne puissent pas être gérés de cette manière, ceux qui le peuvent seront entièrement gérées par le script utilisateur: par exemple, on pourra afficher une page d'erreur personnalisée et envoyer un rapport par email plutôt que l'enregistrer dans un fichier.