Comment faire afficher les erreurs PHP : guide pour pros et débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

« Écran blanc de la mort » en PHP : comment faire parler les erreurs ?



Chaque développeur PHP a déjà vécu cette situation : le code semble fonctionner, mais l'écran reste vide. Aucun message, aucun avertissement. Juste une page blanche et un sentiment de légère folie. Vous reconnaissez ? C'est le classique « écran blanc de la mort » (White Screen of Death — WSOD). Le plus souvent, le problème vient du fait que l'affichage des erreurs PHP est désactivé.



Sur Stack Overflow, la question « How do I get PHP errors to display? » a recueilli des milliers de vues. Et ce n'est pas un hasard : la configuration de l'affichage des erreurs est une base que tout le monde doit connaître. Mais simplement activer display_errors ne suffit pas. Il faut comprendre comment cela affecte les performances et la sécurité de votre application.



Dans cet article, nous allons voir :

  • Comment activer les erreurs PHP dans différents environnements (local, serveur, frameworks) ;
  • Comment configurer error_reporting pour un débogage optimal ;
  • Pourquoi afficher les erreurs en production est une mauvaise idée ;
  • Comment journaliser les erreurs sans perte de performance.


C'est parti !



Pourquoi PHP n'affiche-t-il pas les erreurs ? Trois raisons principales



Avant de plonger dans le code, comprenons pourquoi les erreurs peuvent être masquées. PHP est un langage flexible, et son comportement dépend des paramètres de php.ini, du script lui-même et de l'environnement serveur.



1. Paramètres de php.ini

Le principal responsable est la directive display_errors. Par défaut, sur de nombreux hébergements, elle est réglée sur Off. Cela est fait pour des raisons de sécurité : en production, afficher la pile d'appels à l'utilisateur est une mauvaise pratique.



2. La fonction error_reporting()

Même si display_errors est activé, le niveau d'erreur peut être trop bas. Par exemple, error_reporting(0) masquera tout. Ou vous pouvez accidentellement filtrer certains types d'erreurs (E_NOTICE, E_WARNING).



3. Erreurs avant l'exécution du script

Les plus sournoises sont les erreurs de syntaxe dans php.ini ou dans les fichiers inclus. Si PHP ne peut même pas lancer le script, il n'atteindra pas vos paramètres. Dans ces cas, la vérification de la syntaxe via la console aide : php -l file.php.



Comment activer l'affichage des erreurs PHP : guide étape par étape



Méthode 1. Modification de php.ini (paramètres permanents)

La méthode la plus fiable est de modifier le fichier php.ini. Trouvez le fichier (il se trouve généralement dans /etc/php/ ou /usr/local/etc/php/) et définissez :



display_errors = Onerror_reporting = E_ALL


Après les modifications, redémarrez impérativement le serveur :

sudo service apache2 restart# ou pour nginx + php-fpm :sudo service php8.1-fpm restart


Avantages : le paramètre s'applique à tous les scripts du serveur.
Inconvénients : nécessite un accès au serveur ; ne convient pas à l'hébergement mutualisé.



Méthode 2. Via .htaccess (pour Apache)

Si vous n'avez pas accès à php.ini mais que vous utilisez Apache, utilisez .htaccess :



php_flag display_errors onphp_value error_reporting 32767  # E_ALL


Important : cette méthode fonctionne si la directive AllowOverride est activée sur le serveur.



Méthode 3. Directement dans le script (pour le débogage)

L'option la plus flexible est d'activer les erreurs dans un fichier spécifique. Idéal pour le développement :



<?phpini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL);

// Votre codeecho $undefined_variable; // Provoque une Notice?>


Notez display_startup_errors — il capture les erreurs survenant avant l'exécution du script (par exemple, lors de l'inclusion de fichiers).



Méthode 4. Spécificités des frameworks (Laravel, Symfony, WordPress)

Les frameworks modernes ont leurs propres mécanismes. Dans Laravel

Blogs

Book Recommendations