ErrorHandler

Profil bloqué - 4 janv. 2014 à 17:03
Scaq Messages postés 8 Date d'inscription lundi 7 octobre 2002 Statut Membre Dernière intervention 8 janvier 2014 - 8 janv. 2014 à 15:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/100328-errorhandler

Scaq Messages postés 8 Date d'inscription lundi 7 octobre 2002 Statut Membre Dernière intervention 8 janvier 2014
8 janv. 2014 à 15:11
Pas mal pour le coté objet de ton script.
Perso, juste pour ça je fait :

function rem_ip()
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $IP = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(isset($_SERVER['HTTP_CLIENT_IP'])) $IP = $_SERVER['HTTP_CLIENT_IP'];
else $IP = $_SERVER['REMOTE_ADDR'];
if(strpos($IP,','))
{
$lstip = explode(',',$IP);
$IP = $lstip[0];
}
return $IP;
}

function errlogtxt($errtxt){
$fp = fopen('errlog'.date('Ymd').'.txt','a+');
fseek($fp,SEEK_END);
fputs($fp,"\r\n".'==========================================================='."\r\n\r\n".date('Y-m-d H:i:s')."\r\n".$errtxt."\r\n");
fclose($fp);
}

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
switch ($errno) {
case E_ERROR: // 1 //*
case 1:
$type_erreur = 'ERROR';
break;
case E_WARNING: // 2 //
case 2:
$type_erreur = 'WARNING';
break;
case E_PARSE: // 4 //
case 4:
$type_erreur = 'PARSE';
break;
case E_NOTICE: // 8 //
case 8:
$type_erreur = 'NOTICE';
break;
case E_CORE_ERROR: // 16 //
case 16:
$type_erreur = 'CORE_ERROR';
break;
case E_CORE_WARNING: // 32 //
case 32:
$type_erreur = 'CORE_WARNING';
break;
case E_CORE_ERROR: // 64 //
case 64:
$type_erreur = 'COMPILE_ERROR';
break;
case E_CORE_WARNING: // 128 //
case 128:
$type_erreur = 'COMPILE_WARNING';
break;
case E_USER_ERROR: // 256 //
case 256:
$type_erreur = 'USER_ERROR';
break;
case E_USER_WARNING: // 512 //
case 512:
$type_erreur = 'USER_WARNING';
break;
case E_USER_NOTICE: // 1024 //
case 1024:
$type_erreur = 'USER_NOTICE';
break;
case E_STRICT: // 2048 //
case 2048:
$type_erreur = 'STRICT';
break;
case E_RECOVERABLE_ERROR: // 4096 //
case 4096:
$type_erreur = 'RECOVERABLE_ERROR';
break;
case E_DEPRECATED: // 8192 //
case 8192:
$type_erreur = 'DEPRECATED';
case E_USER_DEPRECATED: // 16384 //
case 16384:
$type_erreur = 'USER_DEPRECATED';
break;
default:
$type_erreur = 'INCONNUE';
break;
}

$ip = rem_ip();

$errtxt = $ip.' ('.$type_erreur.') ['.$errno.'] '.$errstr."\r\n".'ligne '.$errline.' dans le fichier '.$errfile."\r\n";
errlogtxt($errtxt);
//if(_DEV_) return false;
/* Ne pas exécuter le gestionnaire interne de PHP */
return true;
}


set_error_handler("myErrorHandler");
olivier35tf Messages postés 135 Date d'inscription jeudi 28 octobre 2010 Statut Webmaster Dernière intervention 20 mars 2024
8 janv. 2014 à 09:52
Hello,

Cool.
Cela serait sympa en plus d'ajouter une classe de pour envoyer les infos dans syslog
Rejoignez-nous