Gestion des erreurs personnalisé avec PHP

nikizim Messages postés 76 Statut Membre -  
nikizim Messages postés 76 Statut Membre -
Bonjour,

Je souhaiterais récupérer les erreurs générés lors d'une erreur de programmation dans un script php.

Je souhaiterais les récupérer pour les personnaliser lors de l'affichage mais je ne vois pas comment faire.

Pouvez-vous m'aider SVP ?

merci beaucoup d'avance.
A voir également:

14 réponses

nikizim Messages postés 76 Statut Membre 11
 
Bonne merde on dit :p de ohuni

c'est exactement ou je suis ! :)

j'ai récupéré une fonction sur php net qui est sensé fonctionner !!!???

function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
{
    // Date et heure de l'erreur
    $dt = date("Y-m-d H:i:s (T)");

    // Définit un tableau associatif avec les chaînes d'erreur
    // En fait, les seuls niveaux qui nous interessent
    // sont E_WARNING, E_NOTICE, E_USER_ERROR,
    // E_USER_WARNING et E_USER_NOTICE
    $errortype = array (
                E_ERROR              => 'Erreur',
                E_WARNING            => 'Alerte',
                E_PARSE              => 'Erreur d\'analyse',
                E_NOTICE             => 'Note',
                E_CORE_ERROR         => 'Core Error',
                E_CORE_WARNING       => 'Core Warning',
                E_COMPILE_ERROR      => 'Compile Error',
                E_COMPILE_WARNING    => 'Compile Warning',
                E_USER_ERROR         => 'Erreur spécifique',
                E_USER_WARNING       => 'Alerte spécifique',
                E_USER_NOTICE        => 'Note spécifique',
                E_STRICT             => 'Runtime Notice',
                E_RECOVERABLE_ERROR => 'Catchable Fatal Error'
                );
    // Les niveaux qui seront enregistrés
    $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
    
    $err = "<errorentry>\n";
    $err .= "\t<datetime>" . $dt . "</datetime>\n";
    $err .= "\t<errornum>" . $errno . "</errornum>\n";
    $err .= "\t<errortype>" . $errortype[$errno] . "</errortype>\n";
    $err .= "\t<errormsg>" . $errmsg . "</errormsg>\n";
    $err .= "\t<scriptname>" . $filename . "</scriptname>\n";
    $err .= "\t<scriptlinenum>" . $linenum . "</scriptlinenum>\n";

    if (in_array($errno, $user_errors)) {
        $err .= "\t<vartrace>".wddx_serialize_value($vars,"Variables")."</vartrace>\n";
    }
    $err .= "</errorentry>\n\n";
    
    // sauvegarde de l'erreur, et mail si c'est critique
    error_log($err, 3, "/usr/local/php4/error.log");
    if ($errno == E_USER_ERROR) {
        mail("phpdev@example.com","Critical User Error",$err);
    }
}


et qui est appelé de la façon suivante :

$old_error_handler = set_error_handler("userErrorHandler");


Pouvez-vous me dire comment cette fonction arrive a déclarer le variable : $errno

Parce que même en faisant le pires erreurs de php ça ne marche pas chez moi !
1
NookZ Messages postés 2376 Statut Membre 514
 
0
okuni Messages postés 1325 Statut Membre 126
 
Salut,
Tu dois utiliser un .htaccess que tu met à la racine de ton site.
Tu rajoute ces lignes
ErrorDocument 404 /index.php?page=accueil&erreur=404

dans ce cas ci, si tu as une erreur 404, tu sera redirigé a la page indiqué.
cela fonctionne avec tout les type d'erreur.
0
Samy
 
Si tu parle de gestion des erreurs tu dois te renseigner sur le try catch et finally. C'est ce qu'il y a de plus propre pour recupérer ses erreurs ! après j'ai peut être mal compris ta demande mais je vois pas le rapport avec htaccess :o
0
okuni Messages postés 1325 Statut Membre 126
 
ben ça te permet de redirigé en cas d'erreur et de la gérer.
Ou alors c'est moi qui ait mal compris la question :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Samy
 
Il a dit "Lors d'une erreur de programmation dans un script php" .

Mais generalement si ton code est buggé il est buggé, le try catch c'est plus subtile enfaite, mais si ya une erreur de code c'est le serveur hhtp qui va te renvoyer l'erreur, après ya des fonctions comme mysql_error() qiu renvoie de manière détaillées tes erreurs je sais pas si ca existe pour le code PHP je suis pas un expert en erreur AHAH lol ;).

Sinon utilise un IDE qui t'aide a corriger.
0
Samy
 
0
okuni Messages postés 1325 Statut Membre 126
 
ha ouai ok je vois, déso :p
alors je connais un programme c'est rapid php ou quelque chose comme ça. c'est un simple programme de programmation mais il existe un addon Xdebug (je suis sur du nom :p) qui te permet avec firefox de détecter un bug lors d'un lancement d'une page, alors le programme rapid php se lance et te montre l'erreur avec la manière de la corriger.

Je sais pas te dire plus car chez moi, ça n'a jamais fonctionné lol
0
nikizim Messages postés 76 Statut Membre 11
 
Je vous remercie de de vos nombreuses réponses en si peut de temps ;)

J'ai lu le tuto proposé NookZ et je vais essayer de m'en inspirer je crois qu'il est pas mal. Mais le doc de manuelphp aussi.

Je vais vois tout ça et si je me perd je vous dit ...
0
Samy
 
Bonne chance
0
okuni Messages postés 1325 Statut Membre 126
 
bonne merde on dit :p
0
okuni Messages postés 1325 Statut Membre 126
 
Il n'explique pas ce que représente toutes ces variables?
$errno, $errmsg, $filename, $linenum et $vars
Tu devrais trouver un exemple avec.
0
nikizim Messages postés 76 Statut Membre 11
 
En faite je souhaiterais récupérer ne niveau de l'erreur lorsque l'on oublie un point virgule par exemple.
0
Samy
 
Je comprends pas pourquoi tu te casse tant la tête, c'est marqué quand ton script plante la ligne ( ou celle du dessous) et le type d'erreur ^^ S'pa suffisant :o?
0
nikizim Messages postés 76 Statut Membre 11
 
Je souhaite integrer cette erreur dans un template error.php que j'inclue lorsqu'il y a une erreur. C'est pour cela que je récupérer cette erreur.
0