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])
message | Message à envoyer. |
---|---|
Source : ENI | |
type_destination | Type 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 | |
destination | Pré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ément | En-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.