Fin de script : exit

exit met immédiatement fin au script PHP courant et provoque l'envoi de la page telle qu'elle est au navigateur. exit n'est ni une instruction ni une fonction, mais une "construction du langage".

exit peut être employée telle que (ie sans parenthèse et sans paramètre), ou avec un paramètre qui peut être une chaîne de caractères ou un entier :

die est un alias de exit et peut être utilisé à sa place avec les même règles.

Exemple : fin de script

Niveaux d'erreur

Quand une erreur se produit dans un script PHP celui-ci ne sera pas forcément arrêté. Si le niveau de l'erreur n'est pas défini comme fatal, un message d'erreur sera simplement émis par PHP. Suivant la configuration de PHP, les messages d'erreur sont envoyés à la sortie courante (ie affiché dans la page) ou stockés dans un fichier. Si l'erreur est une erreur fatale, l'exécution du script s'arrête.

Il y a 3 niveaux d'erreur dans PHP :

Par défaut, toutes les erreurs sauf notice, sont capturées et un message est affiché.

La fonction error_reporting() permet de définir, pour un script, les erreurs qui seront capturées et pour lesquelles un message sera affiché.

La fonction accepte comme argument une ou plusieurs constantes :

Par exemple pour afficher toutes les erreurs d'exécution on appellera la fonction de la façon suivante en utilisant l'opérateur de bit | :

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

Pour afficher toutes les erreurs :

error_reporting(E_ALL);

Dans la phase de développement, le recours à la dernière instruction est utile, car il permet en particulier de déceler l'utilisation de variables non définies, source d'erreurs parfois difficiles à déceler.

Pour supprimer tous les messages d'erreur (excépté les parse error qu'il n'est pas possible de supprimer), utilisez :
error_reporting(0);

L'utilisation de l'opérateur @ (arobase) placé devant une expression, ou une fonction qui renvoie une expression, supprime l'affichage de message en cas d'erreur dans l'instruction.

Exemple : utilisation de @

Gestionnaire d'erreurs

Nous pouvons définir notre propre gestionnaire d'erreurs avec la fonction set_error_handler(). Cette fonction nécessite comme argument le nom de notre fonction personnalisée de gestion d'erreurs. Par exemple :
set_error_handler('gererErreurs');

La fonction gererErreurs() recevra 5 paramètres, passés automatiquement par PHP :

Pour remettre en place le gestionnaire d'erreurs initial, il faut utiliser la fonction restore_error_handler().

Exemple : gestionnaire d'erreurs

Notre fonction gererErreurs() affiche toutes les informations qu'il est possible de récupérer sur une erreur. Vous pouvez remarquer que l'affichage de la table des symboles, n'est pas ici d'une grande utilité car le script ne manipule par beaucoup d'éléments. Vous remarquerez aussi que le nom du fichier dans lequel se produit l'erreur est un nom complet, donnant des informations sur les répertoires. Ces informations peuvent être utilisées à des fins de piratage et ne devraient pas être affichées. Nous allons donc constituer un message d'erreur plus sybillin.

Exemple : gestionnaire d'erreurs

Redirection des messages d'erreur

Par défaut les messages d'erreurs sont dirigés vers la sortie courante : la page et donc le navigateur.

La fonction error_log() permet de choisir une autre destination pour les messages d'erreurs, et d'en garder une trace. Elle accepte trois arguments : le message d'erreur, la destination du message, et optionnellement une adresse de destination :
error_log(message, destination [,adresse]);

L'exemple suivant montre la redirection des messages d'erreur dans un fichier appelé erreurs.txt

Exemple : gestionnaire d'erreurs

Après avoir exécuté le script une (ou plusieurs fois), vous devez avoir dans votre dossier de travail le fichier "erreurs.txt" contenant les messages d'erreurs envoyés.
Contenu de votre dossier de travail

Le dossier de travail contient déjà des sous-répertoires et fichiers de types divers qui sont préparés pour être utilisé tout au long de ce tutoriel