MA GALAXIE WEB

LETTRE D'INFORMATION

Nom

Courriel (e-mail)


RECHERCHER



Mon blog d'écrivain

RSS

flux RSS
RSS Commentaires

"Poor Lonesome Coder", parce que pendant longtemps j'ai codé seul, sans collégue. Et je m'en allais
dans la lumiére de l'écran couchant, sur mon fidèle Jolly Clavieur, en chantant une chanson... ;-)

La gestion des erreurs en PHP

dossier tiré de mon expèrience aidée d'un article très complet sur la gestion personnalisée des erreurs

En incluant ce code dans toutes les pages d'un programme PHP, on est sur de gérer et mémoriser toutes les erreurs. Le fait de logguer dans un format xml permet une relecture aisée. C'est le code utilisé dans mon projet RAT, qui dispose d'un module de lecture des logs.

error_reporting(E_ALL);

function AddLog($msg, $file='erreurs.log')
{
$f = fopen(ledossierdeslogs.$file, 'a+');
fwrite($f, "<log><date>".date('d/M/Y H:i:s', time())."</date>$msg</log>");
fclose($f);
}

function error_handler($type, $msg, $file, $line, $context)
{
switch($type)
{
case E_ERROR: //fatal runtime error
case E_PARSE: //Runtime parse error
case E_CORE_ERROR: //Fatal startup error
case E_COMPILE_ERROR: //Fatal compile-time error
case E_USER_ERROR: //User-triggered fatal error
$gravite = 'fatale';
echo "Suite à un problème indépendant de notre volonté, ce document est indisponible. Veuillez nous en excuser.<br>".
"Le webmestre a reçu un message à ce sujet.";
break;

case E_WARNING: //Non-fatal runtime error
case E_CORE_WARNING: //Non-fatal startup error
case E_COMPILE_WARNING: //Non-fatal compile-time error
case E_USER_WARNING: //User-triggered non-fatal error
$gravite = 'alerte';
break;

case E_NOTICE: //Non-fatal runtime notice
case E_USER_NOTICE: //User-triggered notice
$gravite = 'benigne';
break;

default: $gravite = 'inconnue';
}

AddLog("<type>$gravite ($type)</type><file>$file (ligne $line)</file><msg>$msg</msg>"); //<context>".print_r($context)."</context>");
}

set_error_handler("error_handler");

Lien(s)

07/05/2003 - Cédric Girard