Gérer les erreurs dans un script PHP Exemple d'erreur PHP : error_log

La fonction error_log permet d'envoyer un message d'erreur vers une destination donnée.

Syntaxe

entier error_log(chaîne message, entier type_destination, [chaîne destination[,
chaîne complément])

Syntaxe
messageMessage à envoyer.
Source : ENI
type_destinationType de destination :
0 : historique PHP
1 : adresse e-mail
2 : n'est plus une option (anciennement poste de déboggage)
3 : fichier
4 : gestionnaire d'identification SAPI
destinationPrécise la destination pour les types 1 et 3 :
1 : adresse e-mail
3 : nom du fichier (créé automatiquement s'il n'existe pas)
complémentEn-têtes complémentaire(s) à envoyer dans le message dans le cas 1 (voir la fonction mail dans le chapitre Envoyer un courrier électronique pour plus d'informations).

La fonction error_log retourne TRUE en cas de succès et FALSE dans le cas contraire.

Pour le type de destination 0 (historique PHP), le fichier de sortie est défini par la directive de configuration error_log.


Remarque

Si la directive de configuration log_errors est à on, les messages sont systématiquement écrits dans le fichier spécifié par la directive error_log, sans qu'il soit nécessaire d'appeler la fonction error_log.

Exemple

<?php
// Pas d'affichage des erreurs dans le script.
error_reporting(0);
// Lecture d'un fichier qui n'existe pas.
$nom_fichier = '/tmp/infos.txt';
if (! readfile($nom_fichier)) {
// Écriture d'un message d'erreur dans un fichier de trace
// spécifique à l'application.
error_log("Impossible de lire le fichier $nom_fichier.\n",
3,'/app/logs/monApplication.log');
// Affichage d'un message pour l'utilisateur.
echo 'Votre requête ne peut pas aboutir ; ',
'essayez de nouveau plus tard.';
};
?>


Résultat dans le fichier monApplication.log

Impossible de lire le fichier /tmp/infos.txt.

Résultat dans le navigateur

Votre requête ne peut pas aboutir ; essayez de nouveau plus tard.

La fonction error_log est pratique, en phase de test ou de production, pour conserver la trace d'une erreur quelque part. Cependant, elle ne remplace pas l'affichage d'un message explicite pour l'utilisateur.

Langage de programmation / Script