Comment faire en sorte que PHP affiche toutes les erreurs : guide complet

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

« PHP affiche un écran blanc, et j'ai besoin d'erreurs ! » — une situation familière ?



Vous écrivez du code en PHP, vous lancez le script, et au lieu d'un résultat, vous obtenez un vide. Ou, pire encore, une erreur étrange sans aucune indication sur la cause. Familier ? Si vous vous êtes déjà demandé « How can I get useful error messages in PHP? » — vous n'êtes pas seul. Cette question sur Stack Overflow a recueilli des milliers de vues, et ce n'est pas pour rien. Par défaut, PHP est configuré pour masquer les erreurs sur les serveurs de production, mais en phase de développement, cela devient un véritable casse-tête.



Dans cet article, nous allons passer en revue toutes les façons de faire parler PHP dans un langage compréhensible. Vous apprendrez comment activer l'affichage des erreurs, configurer leur niveau de détail et les journaliser, afin que le débogage cesse d'être un jeu de devinettes. C'est parti !



Pourquoi PHP se tait-il ? La racine du mal : les paramètres du serveur



Avant d'apprendre à obtenir des messages utiles, comprenons pourquoi ils sont absents. PHP est un langage avec une philosophie de sécurité stricte. Sur les serveurs de production, afficher les erreurs aux utilisateurs est une mauvaise pratique et une menace pour la sécurité. C'est pourquoi dans php.ini (le fichier de configuration principal de PHP), les paramètres par défaut sont les suivants :



  • display_errors = Off — les erreurs ne sont pas affichées à l'écran.
  • error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT — n'affiche pas tous les types d'erreurs.


Mais pour le développement local, c'est une catastrophe. Comment y remédier ? Il existe trois méthodes principales.



Méthode 1 : Modifier php.ini (si vous y avez accès)



La méthode la plus fiable consiste à éditer le fichier php.ini. Trouvez-le (il se trouve généralement à la racine de l'installation PHP ou dans le dossier etc/ sous Linux). Ensuite, recherchez et modifiez les lignes suivantes :



; Active l'affichage des erreurs à l'écrandisplay_errors = On

; Définit le niveau de rapport maximal (toutes les erreurs, sauf les avis d'obsolescence)error_reporting = E_ALL


Après les modifications, redémarrez impérativement le serveur web (Apache, Nginx ou le serveur intégré PHP), sinon les paramètres ne seront pas appliqués.



Important : Sur un serveur de production, display_errors doit toujours être Off. Utilisez cette méthode uniquement pour le développement.



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



Si vous n'avez pas accès à php.ini mais que vous utilisez Apache, vous pouvez redéfinir les paramètres via le fichier .htaccess à la racine de votre site. Ajoutez-y :



php_flag display_errors onphp_value error_reporting E_ALL


Cela fonctionnera si Apache autorise la redéfinition des directives PHP (ce qui est généralement le cas sur la plupart des hébergements).



Méthode 3 : Activer les erreurs directement dans le code (la plus flexible)



C'est ma méthode préférée pour un débogage rapide. Vous pouvez insérer ces lignes au début du script (juste après <?php) :



<?php// Active le niveau de rapport d'erreurs maximalerror_reporting(E_ALL);

// Active l'affichage des erreurs à l'écranini_set('display_errors', 1);

// Active l'affichage des erreurs de démarrage (par exemple, si l'erreur est dans ini_set lui-même)ini_set('display_startup_errors', 1);?>


Désormais, tout Warning, Notice ou Fatal Error sera affiché directement dans le navigateur. Pratique, non ?



Quels sont les types d'erreurs en PHP et que signifient-ils ?



Pour lire les « signaux » de PHP, vous devez connaître leur langage. Voici les principaux types d'erreurs que vous rencontrerez le plus souvent :



  • E_ERROR — erreur fatale. Le script s'arrête. Exemple : appel d'une fonction inexistante.
  • E_WARNING — avertissement. Le script continue, mais quelque chose s'est mal passé. Exemple : include() d'un fichier inexistant.
  • E_NOTICE — notification. Ce n'est pas une erreur, mais un problème potentiel. Exemple : utilisation d'une variable non définie.<

Blogs

Book Recommendations