Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. PHP et MySQL
  3. Gérer les erreurs dans un script PHP
Extrait - PHP et MySQL Maîtrisez le développement d'un site web dynamique et interactif (5e édition)
Extraits du livre
PHP et MySQL Maîtrisez le développement d'un site web dynamique et interactif (5e édition)
1 avis
Revenir à la page d'achat du livre

Gérer les erreurs dans un script PHP

Vue d’ensemble

Une erreur, dans un script PHP, peut se manifester de deux façons, éventuellement simultanées :

  • par une valeur de retour particulière de la fonction PHP dans laquelle l’erreur est rencontrée ;

  • par un message envoyé directement dans la page.

Exemples

Fonction

Comportement en cas d’erreur

require

Si le fichier passé en paramètre n’existe pas, un message est affiché mais aucun code particulier n’est retourné par la fonction.

mysqli_query

Si le serveur MySQL retourne une erreur sur l’exécution d’une requête, aucun message n’est affiché mais la fonction retourne FALSE (la nature de l’erreur pouvant être récupérée par d’autres fonctions).

mysqli_connect

Si le serveur MySQL retourne une erreur lors de la connexion, un message est affiché et la fonction retourne FALSE (la nature de l’erreur pouvant être récupérée par d’autres fonctions).

Gérer les erreurs dans un script PHP consiste donc, en général, à mettre en place un mécanisme qui permette de détecter la génération d’une erreur afin d’afficher soi-même un message à la place du message directement affiché par PHP.

Les messages d’erreur PHP

Les messages d’erreur (ou d’alerte) affichés par PHP ont un niveau correspondant à leur gravité :

Valeur

Constante associée

Description

1

E_ERROR

Erreur fatale d’exécution (message "fatal error: …"). Le script s’interrompt. Exemples : appel à une fonction qui n’existe pas, fichier mentionné dans l’instruction require qui n’existe pas.

2

E_WARNING

Alerte d’exécution (message "warning: …"). Le script se poursuit. Exemple : tentative d’ouverture, avec fopen, d’un fichier qui n’existe pas, ouverture d’une connexion MySQL qui échoue… Généralement, la poursuite du script provoque d’autres messages du même type.

4

E_PARSE

Erreur de compilation ("Parse error: …"). Le script ne s’exécute pas. Exemple : oubli d’un point-virgule, d’une parenthèse fermante…

8

E_NOTICE

Avertissement lors de l’exécution (message "Notice: …"). Par défaut, PHP est configuré pour ne pas afficher ces avertissements. Le script se poursuit.

16

E_CORE_ERROR

Erreur fatale lors de l’initialisation de PHP. Le script ne s’exécute pas.

32

E_CORE_WARNING

Alerte lors de l’initialisation de PHP.

64

E_COMPILE_ERROR

Erreur fatale lors de la compilation. Le script ne s’exécute pas.

128

E_COMPILE_WARNING

Alerte lors de la compilation.

256

E_USER_ERROR

Erreur générée par le développeur. Le script s’interrompt.

512

E_USER_WARNING

Alerte générée par le développeur.

1024

E_USER_NOTICE

Avertissement généré par le développeur.

2048

E_STRICT

Conseils lors de l’exécution. Autorise PHP à suggérer des modifications...

Les fonctions de gestion des erreurs

PHP propose plusieurs fonctions permettant de gérer correctement les erreurs dans un script :

Nom

Rôle

error_reporting

Définit les niveaux d’erreur qui sont affichés par PHP.

error_log

Envoie un message d’erreur vers une destination (fichier par exemple).

set_error_handler

Indique le nom d’une fonction utilisateur à utiliser comme gestionnaire d’erreurs.

restore_error_handler

Réactive l’ancien gestionnaire d’erreurs.

set_exception_handler

Indique le nom d’une fonction utilisateur à employer comme gestionnaire d’exception.

restore_exception_handler

Réactive l’ancien gestionnaire d’exception.

trigger_error, user_error

Déclenchent une erreur définie par le développeur (user_error est un alias de trigger_error). 

error_get_last

Retourne des informations sur la dernière erreur rencontrée dans le script.

error_clear_last

Efface la dernière erreur rencontrée dans le script.

Il existe aussi deux fonctions, debug_backtrace et debug_print_backtrace, qui permettent d’obtenir des informations utiles pour la mise au point (contexte d’exécution et pile des appels) ; pour en savoir plus sur ces deux fonctions, reportez-vous à la documentation.

En complément, l’opérateur @, placé devant le nom d’une fonction, permet de supprimer l’affichage des messages générés en cas d’erreur dans la fonction.

Exemple

<?php 
$fichier = @fopen('/tmp/infos.txt','r'); // le fichier n'existe pas 
?> 

Lors de l’exécution de ce script, aucun message n’est affiché bien que le fichier demandé n’existe pas.

Depuis la version 8, l’opérateur @ ne supprime plus l’affichage des erreurs fatales qui provoquent l’arrêt...