Affichage des erreurs PHP

L'affichage des erreurs PHP est parfois utile, surtout lors de la traditionnelle page blanche. Mais l'affichage des erreurs sur un site en production peut s'avérer problématique. De plus, les alertes et autres messages d'erreurs peuvent aussi donner un peu trop d’indications à un éventuel hacker.

Script fonctionnant sur PHP 5

Le script PHP

Voici un petit code PHP que j'utilise pour afficher / gérer mes erreurs PHP. Ce code permet l'affichage des erreurs PHP à l'écran pour les sites en développement ou l'affichage des erreurs dans un fichier log pour les sites en productions. La méthode d'affichage (écran ou fichier) se règle grâce à la variable '$type_gestion', site en développement → 1, site en production → 2

// Affichage des erreurs
$type_gestion = 1; // 1=>mode debug, 2=>mode production (erreur dans log/error.log), 0=>Aucun traitement
switch ($type_gestion) {
    case '1':
        if (PHP_VERSION_ID < 50400) error_reporting (E_ALL | E_STRICT);
        else error_reporting (E_ALL);
	ini_set('display_errors', true);
	ini_set('html_errors', false);
	ini_set('display_startup_errors',true);		  
        ini_set('log_errors', false);
	ini_set('error_prepend_string','<span style="color: red;">');
	ini_set('error_append_string','<br /></span>');
	ini_set('ignore_repeated_errors', true);
    break;
    case '2': 
        error_reporting (E_ALL);
	ini_set('display_errors', false);
	ini_set('html_errors', false);
	ini_set('display_startup_errors',false);
	ini_set('log_errors', true);
	ini_set('error_log', CHG_ROOT_PATH.'log/error.log');
	ini_set('error_prepend_string','<span style="color: red;">');
	ini_set('error_append_string','</span>');
	ini_set('ignore_repeated_errors', true);
    break;
    default:
	error_reporting (E_ALL);
	ini_set('display_errors', false);
	ini_set('html_errors', false);
	ini_set('display_startup_errors',false);
	ini_set('log_errors', false);
}

Explication du code

Une petite explication du code

if (PHP_VERSION_ID < 50400) error_reporting (E_ALL | E_STRICT);
        else error_reporting (E_ALL);

Cette ligne permet l'affichage de toutes les erreurs et des erreurs de type E_STRICT si la version de PHP est inférieure à PHP 5.4.

Depuis PHP 5.4, la ligne précédente peut être remplacée par la ligne suivante :

error_reporting (E_ALL);

En effet, avant PHP 5.4, E_ALL ne contient pas les alertes de niveau E_STRICT.

ini_set('display_errors', true);

Cette ligne active l'affichage, mettre à 'false' pour ne rien afficher.

ini_set('html_errors', false);

Cette ligne désactive les liens html dans les erreurs.

ini_set('display_startup_errors',true); 

Cette ligne permet affiche les erreurs de démarrage.

ini_set('log_errors', true); 

Cette ligne permet l'écriture des erreurs dans un fichier log. Mettre à 'true' pour activer l'option.

ini_set('error_log', CHG_ROOT_PATH.'log/error.log');

Cette ligne est a préciser si 'log_errors' est a 'true'. Elle indique le chemin où se trouve le fichier log.

ini_set('error_prepend_string','<span style="color: red;">');
ini_set('error_append_string','</span>');

Ces deux lignes permettent de mettre en forme l'affichage des erreurs à l'écran.

ini_set('ignore_repeated_errors', true);

Cette ligne permet la suppression des erreurs répétitives.

Pour conclure

J'utilise très souvent se script, notamment pour le développement de code source. Il est très facile a mettre en œuvre, vous pouvez l'utiliser dans vos codes sources en espérant que ça puisse vous aider.

Notes de version

  • [17/11/2017] : Harmonisation des pages

Auteurs et sources