[PHP] Cacher les erreurs PHP sur n’importe quel hébergement (mutualisé ou dédié)

En phase de développement, l’affichage des erreurs est un gain de temps non négligeable, en revanche sur un site en production, il est fortement conseillé de supprimer l’affichage des erreurs PHP pour des raisons de sécurité.

Exemple d’erreur :

Fatal error: require() [function.require]: Failed opening required ‘WS_RdOOT/lib/comment.class.php’ (include_path=’.:/Applications/MAMP/bin/php5/lib/php’) in/Applications/MAMP/htdocs/fds_local/index.php on line 8

Ce simple message peut donner des informations sur l’architecture de votre application (site web) et ainsi faciliter le travail des pirates.

Sur un serveur dédié ou tout autre hébergement donnant accès au fichier php.ini (fichier de configuration de PHP), trouver la ligne :

display_errors = On

Remplacez On par Off et redémarrez le serveur HTTP.

Sur un hébergement dédié ne proposant pas l’accès au fichier php.ini, il est également possible de changer ce paramètre en le modifiant au runtime. Il suffit d’ajouter dans votre code PHP la ligne suivante :

error_reporting(0);

L’affichage des erreurs est maintenant désactivé. Attention pour que ce système soit efficace, il faut inclure cette ligne dans toutes les pages de votre site.

La fonction error_reporting() permet également d’afficher certaines erreurs, les warnings, les notices, etc… Pour plus d’informations reportez-vous à la page dédiée à cette fonction.

Rating 3.00 out of 5
oct 9th, 2009 | Posted in Développement web, PHP
Tags:
  1. oct 9th, 2009 at 12:25 | #1

    C’est mal de masquer les erreurs ! le mieux c’est de les corrigées :D

  2. oct 9th, 2009 at 13:03 | #2

    C’est sûr mais tu n’es pas à l’abri d’une défaillance quelconque dans ton code et même si il vaut mieux mettre un site sans erreur en production, le fait de désactiver les erreurs peut être une petite sécurité supplémentaire ;-)

  3. oct 9th, 2009 at 16:30 | #3

    C’est sûr :D

  4. oct 12th, 2009 at 22:37 | #4

    @Jean Marie : un serveur de production n’a pas vocation a afficher les erreurs.
    Dans l’idéal la directive display_errors devra être à off et la directive log_error à on.

    Cependant dans un sens tu a raison de dire que cacher les erreurs sans les traiter c’est mal ; mais seul un serveur de développement et/ou de tests devra afficher les messages d’erreur. Dans ce cadre d’ailleurs, n’oubliez pas de configurer error_reporting à E_ALL pour ne pas laisser échapper des E_NOTICE.

    Au passage d’ailleurs, on peut également modifier la valeur de la directive display_error depuis un fichier de conf Apache. Ajouter par exemple « php_value display_errors On/Off » dans un .htaccess et cela fera l’affaire.

  5. oct 12th, 2009 at 23:10 | #5

    Je ne savais pas que l’on pouvait modifier ce paramètre dans un fichier de conf Apache, merci ;)

  6. oct 16th, 2009 at 21:38 | #6

    @Styix ; c’est une directive de configuration de type « PHP_INI_ALL ».

    Ce qui signifie que tu peut la modifier depuis n’importe ou : fichier php.ini, fonction ini_set(), fichier .htaccess, fichier httpd.conf (ou fichier de conf d’apache) et même … depuis ta base de registre si tu est sous windows !

    Dans le manuel PHP il n’y a pas que le chapitre « Référence des fonctions » à lire :)

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>