Cacher les erreurs PHP aux visiteurs - Tutoriel pour Webmasters  

Accueil > Tutoriels pour Webmasters > Cacher les erreurs PHP aux visiteurs

Cacher les erreurs PHP aux visiteurs

Pour améliorer l'expérience utilisateur et l'ergonomie d'un site, il est préférable de ne pas afficher de messages d'erreur PHP. Cet article présente plusieurs méthodes pour cacher ou désactiver les messages d'erreurs.

Raisons de cacher les erreurs

En général un site qui affiche des erreurs n'est pas considéré comme très fiable par les visiteurs. Cela est d'autant plus vrai que les messages d'erreur sont à la fois incompréhensible par les internautes qui ne sont pas familier avec l'outil informatique et par ceux qui ne parlent pas Anglais non plus.

Par ailleurs, certains messages d'erreurs dévoilent des informations qui peuvent être exploiter par des pirates informatiques. Ainsi, ne pas afficher ces erreurs, compliquent la tâche des hackers.

Prérequis

La première chose à savoir, c'est que dans l'idéal il faut supprimer l'erreur à sa source, au lieu de vouloir cacher le message qui résulte de l'erreur. Mis à part ça, il faut connaître un minimum le PHP pour pouvoir suivre ce tutoriel.

Désactiver l'affichage des erreurs

Le langage PHP est assez puissant et donne la possibilité de désactiver l'affichage des erreurs. Il faut toutefois garder en tête qu'une fois désactivé, ce sera plus dur de les retrouver et de les résoudre.

Désactiver l'affichage d'erreur pour une fonction

Il suffit de placer le symbole arobase (@) devant le nom d'une fonction pour que celle-ci ne retourne pas d'erreur. Le code PHP ci-dessous envoi un email au destinataire et ne retournera pas d'erreurs si l'adresse email n'est pas correcte.

  1. <?php
  2. // Dans cet exemple il faut remplacer "destinataire" par une adresse email.
  3. @mail('destinataire', 'sujet', 'message');
  4. ?>

Le symbole arobase peut ainsi être utilisé sur n'importe quel autres fonctions pour éviter d'afficher les erreurs qui pourrait résulter de ces fonctions.

Désactiver l'affichage des erreurs sur une page

Il est possible de désactiver les messages d'erreurs sur l'ensemble d'une page PHP. Pour cela il faut placer le code suivant tout en haut de la page web.

  1. <?php
  2. // Tout début du code PHP. Situé en haut de la page web
  3. ini_set("display_errors",0);error_reporting(0);
  4. ?>

Idéalement, il faut s'assurer qu'il n'y a pas de contenu HTML avant ce code HTML.

Désactiver l'affichage des erreurs sur un site

Au lieu d'entrer le code précédent sur toutes les pages d'un site, il est tout autant possible de modifier le fichier php.ini. Pour cela il faut mettre le paramètre "display_errors" à "off", comme présenté ci-joint:

  1. display _errors = off

Dans les explications suivantes, ce code sera amélioré pour tout de même enregistrer les erreurs qui peuvent se produire.

Cacher les messages d'erreur

Au lieu de désactiver totalement les erreurs, il est possible de les dissimuler. Cela permet de ne pas les rendre visible aux visiteurs, mais de faire en sorte que l'administrateur puisse tout de même les consulter pour les déboguer.

L'une des techniques commune consiste consiste à mettre les messages d'erreur dans un commentaire HTML. Ainsi, le message d'erreur n'est visible qu'en affichant le code source de la page (chose que les visiteurs font très rarement).

  1. <?php
  2. // Affichera les éventuelles erreurs dans un commentaire HTML
  3. echo '<!--';
  4. mail('destinataire', 'sujet', 'message');
  5. echo '-->';
  6. // A savoir: dans certains cas il peut aussi bien être possible d'afficher l'erreur
  7. // en blanc sur un fond blanc (par exemple).
  8. ?>

Il faut toutefois savoir que cette technique ne fonctionne que pour les erreurs d'avertissement ou les erreurs peu importantes. Si une erreur est critique, le reste de la page ne s'affichera sûrement pas.

Créer un log des erreurs du site

Malgré que les messages soit dissimulés, il faut pouvoir les visualiser pour se rendre compte des failles éventuelles dans un script. Pour cette raison, il est possible d'adapter le fichier php.ini avec les commandes suivantes:

  1. display _errors = off
  2. log_errors = on
  3. error_log = /dossier_log/log_erreur.txt

La dernière ligne de ce code désigne un fichier texte qui contiendra le log des erreurs qui seront rencontrées sur le site web associé à ce fichier php.ini. Il suffira alors de le consulter pour voir d'un coup d'œil toutes les erreurs qui pourront se produire.