Leçon N° 11 : Gestion des erreurs
La fonction 'set error handler' 5¤
Notes de page
Source: lesson_11_h_set_error_handler_function_5.phpRésultat
<?php 
error_reporting
(E_ALL);
ini_set("display_errors"1);
//bug php5 : set_error_handler ne capte pas les erreurs fatales
// custom error handler
function eh($type$msg$file$line)
{
    
// on lit les principales variables d'environnement
    // pour ecrire leur contenu dans le log
    
global $HTTP_HOST$HTTP_USER_AGENT$REMOTE_ADDR$REQUEST_URI;
    
// on donne un nom au fichier d'erreur
    
$errorLog "erreur.log";    
    
// construction du contenu du fichier d'erreur
    
$errorString "Date: " date("d-m-Y H:i:s"mktime()) . "\n";
    
$errorString .= "Type d'erreur: $type\n";
    
$errorString .= "Message d'erreur: $msg\n";
    
$errorString .= "Fichier: $file($line)\n";
    
$errorString .= "Host: $HTTP_HOST\n";
    
$errorString .= "Client: $HTTP_USER_AGENT\n";
    
$errorString .= "Client IP: $REMOTE_ADDR\n";
    
$errorString .= "Request URI: $REQUEST_URI\n\n";
    
// ecriture du log dans le fichier erreur.log
    
$fp fopen($errorLog"a+");
    
fwrite($fp$errorString);
    
fclose($fp);

    
// on pourrait aussi envoyer $errorString par mail

    // display error message
    
echo "<h4>Erreur (<small>$msg</small>)</h4>";
    echo 
"Nous sommes désolés, mais cette page ne peut être affichée à cause d'une erreur interne.
    cette erreur a été enregistrée et sera corrigée dès que possible.
    <br/> <a href=# onClick='history.go(-1)'>Cliquer ici pour revenir au menu précédent.</a>"
;

}
// define a custom handler
set_error_handler("eh");
// attempt a MySQL connection to get the error
$connection mysql_connect("localhost""toto""xyz");
//mysql_select_db("content");

// generate and execute query 
$query "SELECT * FROM news ORDER BY timestamp DESC";
$result mysqli_query($mysqli,$query$connection);

// if resultset exists
if (mysqli_num_rows($result) > 0)
{
?>

    <ul>

<?php
    
// iterate through query results
    // print data
    
while($row mysql_fetch_object($result))
    {
?>
    <li><b><?php $row->slug ?></b>
    <br/>
    <font size=-1><i><?php $row->timestamp ?></i></font>
    <p>
    <font size=-1><?php echo "***".substr($row->content0150); ?>... 
    <a href=story.php?id=<?php $row->id ?> >Read more</a></font>
    <p>
<?php
    
}
?>
</ul>
<?php
}
else
{
    echo 
"Impossible de continuer !";
}
?>


Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/marchons/autres_sites/atelierphp_net/exercises/lesson_11_h_set_error_handler_function_5.php:39 Stack trace: #0 /home/marchons/autres_sites/atelierphp_net/commons/show_exercises.php(172): require() #1 {main} thrown in /home/marchons/autres_sites/atelierphp_net/exercises/lesson_11_h_set_error_handler_function_5.php on line 39