Comment afficher les erreurs PHP ou créer un fichier log

Dans cet article :

  • Comment activer les erreurs en modifiant le fichier php.ini
  • Comment désactiver les erreurs en modifiant le fichier php.ini
  • Comment activer les erreurs sans modifier le fichier php.ini ?
  • Comment désactiver les erreurs sans modifier le fichier php.ini ?
  • Une fonction PHP clé en main pour créer un repertoire de logs.

 

Pour configurer l’affichage des erreurs PHP, il faut agir sur les options du fichier php.ini. Comme la plupart des hébergements mutualisés ne permettent pas de modifier ce fichier, nous allons voir comment agir sur les messages d’erreurs, avec ou sans accès au fichier php.ini.

Dans tous les cas, nous allons utiliser deux directives : display_errors et error_reporting

display_errors

display_errors est la directive qui permet d’afficher ou non les messages d’erreurs.
Elle peut prendre deux valeurs : « On » pour permettre l’affichage ou « Off » pour désactiver l’affichage.

error_reporting et les niveaux d’erreur

error_reporting permet de spécifier le niveau d’erreur que nous souhaitons afficher (liste non exhaustive) :

  • E_ALL : Affiche toutes les erreurs.
  • E_WARNING : Ce sont des erreurs qui n’interrompent pas l’exécution du script.
  • E_NOTICE : Ce sont des remarques qui peuvent cacher une erreur ou un comportement normal.

Activer ou désactiver les erreurs en modifiant le fichier php.ini

; Print out errors (as a part of the output).  For production web sites,
; you're strongly encouraged to turn this feature off, and use error logging
; instead (see below). Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as file paths on your Web
; server, your database schema or other information.
display_errors = On
  • Passer display_errors à « On » pour activer les messages d’erreurs
  • ou à « Off » pour les désactiver.
; E_ALL             - All errors and warnings
; E_ERROR - fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors)
; E_PARSE - compile-time parse errors
; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it's possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it's automatically initialized to an
; empty string)
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
; initial startup
; E_COMPILE_ERROR - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR - user-generated error message
; E_USER_WARNING - user-generated warning message
; E_USER_NOTICE - user-generated notice message
;
; Examples:
;
; - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
; - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
; - Show all errors except for notices
;
error_reporting = E_ERROR

Vous pouvez combiner plusieurs directives, par exemple si vous souhaitez afficher toutes les erreurs sauf les notices, vous utiliserez :

error_reporting  =  E_ALL & ~E_NOTICE

Activer l’enregistrement des erreurs dans un fichier log dans le php.ini

; Log errors into a log file (server-specific log, stderr, or error_log (below))
; As stated above, you're strongly advised to use error logging in place of
; error displaying on production web sites.
log_errors = On

; Log errors to specified file.
error_log = "/php_error.log"

Activer ou désactiver les erreurs sans modifier le fichier php.ini

Vous pouvez ajouter ces directives directement depuis un fichier PHP. Vous veillerez bien sur à ce qu’il soit lu sur toutes les pages de votre site.

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);
?>

Activer l’enregistrement des erreurs dans un fichier log dans un fichier PHP :

Pour enregistrer les erreurs dans un fichier log, vous ajouterez le code suivant qui indique le chemin du fichier log :

<?php
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/.log_error');
?>

Si vous souhaitez tracer votre script et envoyer dans les logs un commentaire de votre choix, vous pouvez utiliser ce code :

<?php
error_log("Ecrit un message personnalisé dans le fichier log", 0);
?>

Voici donc le code complet :

<?php
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__. '/.log_error');
error_reporting(E_ALL & ~E_NOTICE);
?>

Comment connaître la configuration courante ?

phpinfo() vous permet de consulter les informations sur la configuration de PHP. Il vous suffit pour cela d’exécuter la fonction phpinfo() :

<?php
phpinfo() ;

qui vous donnera des informations sur la configuration de l’affichage des erreurs et des logs, comme par exemple :

Fonction clé en main :


Si cet article "Comment afficher les erreurs PHP ou créer un fichier log" vous a aidé, si vous avez des questions ou des améliorations à proposer, n'hésitez pas à me laisser un commentaire en bas de page !
Charlie Stram,
Développeur web freelance

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *