PHP et la gestion des erreurs par courriel
lundi, 6 février 2006, 12:42 AM - PHP, VoiceXML
Lors des séances de tests, il peut être intéressant d'envoyer une alerte par courriel au programmeur si une erreur importante bloque l'affichage d'une page.
Par la même occasion, on peut en profiter pour rediriger le testeur (ou le client si c'est "live"!) vers une autre page du type "Une erreur s'est produite, l'administrateur en a été informé. Cliquez ici pour continuer...".
J'ai trouvé ce code (que j'ai un peu remodelé) sur le site de
PHP qui répond bien à ce besoin:
<?php $email_admin = 'debug@mon-adresse.com'; $link = 'http://www.mon-adresse.com/redirection.php';
error_reporting (E_ERROR | E_WARNING | E_NOTICE);
function mailErrorHandler( $errno, $errstr, $errfile='?', $errline= '?') {
global $email_admin, $link;
/* fausse erreur? on ignore */ if (($errno & error_reporting()) == 0) return;
$err = ''; switch($errno) { case E_ERROR: $err = 'FATAL'; break; case E_WARNING: $err = 'ERROR'; break; /* Les erreurs E_NOTICE ne seront pas signifiées */ case E_NOTICE: return; }
mail($email_admin, "PHP: $errfile, $errline", "$errfile, Line $errline\n$err($errno)\n$errstr");
echo '<META HTTP-EQUIV="Refresh" CONTENT="0;url='.$link.'">';
die(); }
set_error_handler('mailErrorHandler'); ?>
|
Voici le même code dans un contexte VoiceXML qui prend en considération la langue parlée de l'utilisateur :
<?php $email_admin = 'debug@mon-adresse.com'; $language_id = $_COOKIE['language_id']; /* Note: les cookies en VoiceXML sont "stockés" du côté serveur */
error_reporting (E_ERROR | E_WARNING | E_NOTICE);
function mailErrorHandler( $errno, $errstr, $errfile='?', $errline= '?') {
global $email_admin, $language_id; if (($errno & error_reporting()) == 0) return;
$err = ''; switch($errno) { case E_ERROR: $err = 'FATAL'; break; case E_WARNING: $err = 'ERROR'; break; case E_NOTICE: return; }
mail($email_admin, "PHP: $errfile, $errline", "$errfile, Line $errline\n$err($errno)\n$errstr");
header ('Content-type: text/xml');
echo '<?xml version="1.0" encoding="ISO-8859-1"?> <vxml version="2.0"> <form> <block> <prompt> <audio src="../audio/'.$language_id.'/divers_err.wav" /> </prompt> <goto next="menu.php" /> </block> </form> </vxml>';
die(); }
set_error_handler('mailErrorHandler'); ?>
|
[ ajout commentaire ]
|
[ 0 trackbacks ]
|
permalink