Comment configurer error_reporting E_ALL et display_errors pour afficher toutes les erreurs PHP lors du développement et du débogage

novembre 1, 2025

comment Aucun commentaire

by Kévin Remy

Comment configurer error_reporting E_ALL et display_errors pour afficher toutes les erreurs PHP lors du développement et du débogage

novembre 1, 2025

comment Aucun commentaire

by Kévin Remy

🚀 Configuration immédiate : Le code essentiel

Pour afficher toutes les erreurs PHP pendant le développement, ajoutez ces trois lignes au début de votre script :

ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

Cette configuration active le signalement complet des erreurs (error_reporting) et leur affichage à l’écran (display_errors), incluant les erreurs survenant au démarrage de PHP.

📋 Comprendre les trois directives essentielles

Directive Fonction Valeur recommandée
error_reporting Définit quels types d’erreurs sont signalés E_ALL ou -1
display_errors Contrôle l’affichage des erreurs à l’écran On ou 1
display_startup_errors Affiche les erreurs lors du démarrage PHP On ou 1

🔍 Le système error_reporting E_ALL en détail

La fonction error_reporting(E_ALL) utilise un système de masque binaire pour capturer tous les types d’erreurs PHP :

  • E_ERROR : Erreurs fatales qui arrêtent l’exécution
  • E_WARNING : Avertissements non fataux
  • E_NOTICE : Notifications pour les pratiques douteuses
  • E_DEPRECATED : Fonctionnalités obsolètes
  • E_STRICT : Suggestions d’amélioration du code

💡 Astuce : Depuis PHP 8.0, E_ALL est la valeur par défaut d’error_reporting, contrairement aux versions antérieures qui excluaient les erreurs deprecated et strict.

⚙️ Méthodes de configuration selon votre environnement

Configuration dans le script PHP

La méthode la plus rapide pour activer l’affichage d’erreurs :

<?php
// Configuration de débogage complète
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
ini_set('log_errors', '1');
error_reporting(E_ALL);

// Alternative avec error_reporting(-1)
// error_reporting(-1);

// Votre code ici
?>

Configuration globale via php.ini

Pour une configuration permanente, modifiez votre fichier php.ini :

display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On

Localisez votre fichier php.ini avec phpinfo() et redémarrez votre serveur web après modification.

Configuration Apache (.htaccess)

Pour les serveurs Apache avec mod_php :

php_flag display_errors On
php_flag display_startup_errors On
php_value error_reporting E_ALL

🔐 Sécurité : Développement vs Production

⚠️ Attention : N’activez jamais display_errors en production ! Les messages d’erreur peuvent révéler des informations sensibles sur votre architecture.

Configuration pour la production

// Configuration production sécurisée
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/path/to/error.log');
error_reporting(E_ALL);

🛠️ Template de débogage complet

Voici un script de test complet pour valider votre configuration :

<?php
// Template de débogage PHP complet
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
ini_set('log_errors', '1');
error_reporting(E_ALL);

// Test des différents types d'erreurs
echo "Configuration active :n";
echo "display_errors: " . ini_get('display_errors') . "n";
echo "error_reporting: " . ini_get('error_reporting') . "n";

// Test notice
echo $variable_inexistante;

// Test warning
include 'fichier_inexistant.php';

// Test deprecated (exemple selon version PHP)
// split('/', 'test/string');
?>

🔧 Résolution des problèmes courants

Les erreurs ne s’affichent toujours pas ?

  • Erreurs de syntaxe : Elles empêchent l’exécution du script, donc ini_set() ne fonctionne pas
  • Erreurs fatales : Configurez directement dans php.ini ou .htaccess
  • Cache serveur : Redémarrez votre serveur web après les modifications

Différences entre versions PHP

PHP 8.0+ inclut automatiquement toutes les erreurs dans E_ALL, contrairement aux versions antérieures qui nécessitaient :

// Pour PHP < 8.0
error_reporting(E_ALL | E_STRICT | E_DEPRECATED);

📚 FAQ : Questions fréquentes

Quelle est la différence entre error_reporting et display_errors ?

error_reporting détermine quels types d'erreurs PHP doit signaler, tandis que display_errors contrôle si ces erreurs sont affichées à l'écran ou non.

Puis-je utiliser error_reporting(-1) au lieu de E_ALL ?

Oui, error_reporting(-1) est équivalent à E_ALL et active tous les types d'erreurs. Certains développeurs préfèrent cette syntaxe pour sa clarté.

Pourquoi certaines erreurs n'apparaissent pas avec ma configuration ?

Les erreurs de syntaxe ou fatales qui surviennent avant l'exécution de ini_set() ne peuvent pas être capturées par cette méthode. Utilisez plutôt la configuration php.ini ou .htaccess.

Comment désactiver l'affichage d'erreurs spécifiques ?

Utilisez l'opérateur binaire pour exclure certains types : error_reporting(E_ALL & ~E_NOTICE) affiche toutes les erreurs sauf les notices.

Est-il sécurisé d'activer display_errors en production ?

Non, jamais. Les messages d'erreur peuvent révéler des chemins de fichiers, des informations de base de données et d'autres détails sensibles. Utilisez plutôt log_errors pour enregistrer les erreurs dans un fichier.

🔗 Sources et ressources externes

Laisser un commentaire