Afficher les erreurs PHP : guide complet pour 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

Introduction : pourquoi PHP reste silencieux quand quelque chose ne va pas ?

\n\n

Avez-vous déjà écrit un script PHP, l'avez exécuté dans votre navigateur... pour ne voir qu'une page blanche ? Aucun message, aucun indice. Juste le silence et l'impression d'avoir fait une erreur. Cela vous dit quelque chose ?

\n\n

C'est l'un des problèmes les plus fréquents pour les débutants en PHP. La question « How can I get useful error messages in PHP? » sur Stack Overflow a recueilli des milliers de vues. Et ce n'est pas étonnant : sans messages d'erreur clairs, le débogage devient une véritable loterie.

\n\n

Dans cet article, nous allons voir comment « faire parler » PHP pour qu'il vous explique honnêtement ce qui ne va pas. Vous découvrirez quels paramètres contrôlent l'affichage des erreurs, comment les activer à différentes étapes du développement, et que faire si les erreurs ne s'affichent toujours pas. C'est parti !

\n\n

Pourquoi PHP cache-t-il les erreurs par défaut ?

\n\n

Avant de commencer à modifier les réglages, comprenons la raison. PHP est un langage qui s'exécute sur le serveur. Sur les serveurs de production, afficher les erreurs aux utilisateurs est une mauvaise pratique. Imaginez : au lieu d'une belle page de boutique en ligne, le client voit quelque chose comme Fatal error: Call to undefined function. Ce n'est pas seulement inesthétique, c'est aussi dangereux – un attaquant pourrait découvrir la structure de votre code.

\n\n

C'est pourquoi les développeurs de PHP ont désactivé par défaut l'affichage des erreurs dans le navigateur. Mais sur un serveur local (comme OpenServer, XAMPP, MAMP) ou en phase de développement, cela devient très gênant. Corrigeons cela.

\n\n

Méthode 1 : Activer les erreurs via php.ini (globalement)

\n\n

La méthode la plus fiable consiste à modifier le fichier de configuration php.ini. Trouvez-le dans le dossier de votre PHP (ou dans le panneau de contrôle de votre serveur local). Ouvrez le fichier et cherchez (ou ajoutez) les lignes suivantes :

\n\n
display_errors = On\nerror_reporting = E_ALL\n
\n\n

Qu'est-ce que cela signifie ?

\n
    \n
  • display_errors = On — autorise l'affichage des erreurs directement à l'écran (dans le navigateur ou la console).
  • \n
  • error_reporting = E_ALL — demande à PHP d'afficher tous les types d'erreurs : des avertissements (warnings) aux erreurs fatales.
  • \n
\n\n

Après les modifications, redémarrez le serveur web (Apache, Nginx). Désormais, tous vos scripts afficheront les erreurs.

\n\n

Important : Sur un serveur de production, ne laissez jamais display_errors = On. Utilisez Off et configurez la journalisation (voir ci-dessous).

\n\n

Méthode 2 : Activer les erreurs directement dans le script (méthode rapide)

\n\n

Si vous n'avez pas accès à php.ini (par exemple sur un hébergement mutualisé), ou si vous souhaitez activer les erreurs uniquement pour un fichier, utilisez les fonctions ini_set() et error_reporting(). Ajoutez ces lignes au tout début de votre script PHP :

\n\n
<?php\nini_set('display_errors', 1);\nini_set('display_startup_errors', 1);\nerror_reporting(E_ALL);\n\n// Votre code ici\n$foo = 1/0; // Déclenchera Warning: Division by zero\n?>\n
\n\n

Explication ligne par ligne :

\n
    \n
  • ini_set('display_errors', 1) — active l'affichage des erreurs à l'écran.
  • \n
  • ini_set('display_startup_errors', 1) — active les erreurs qui surviennent au démarrage de PHP (par exemple si le script lui-même ne peut pas se charger).
  • \n
  • error_reporting(E_ALL) — affiche tous les niveaux d'erreurs.
  • \n
\n\n

Cette méthode fonctionne instantanément et ne nécessite pas de redémarrer le serveur. Idéal pour un débogage rapide.

\n\n

Méthode 3 : Utiliser .htaccess (pour Apache)

\n\n

Si vous utilisez un serveur Apache, vous pouvez activer les erreurs via le fichier .htaccess à la racine de votre site. Ajoutez-y ceci :

\n\n
php_flag display_errors on\nphp_value error_reporting E_ALL\n
\n\n

Après avoir enregistré le fichier, les erreurs s'afficheront pour tous les scripts de ce dossier et de ses sous-dossiers. Pratique pour activer rapidement le débogage.

Blogs

Book Recommendations