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.