Gestion des erreurs personnalisé avec PHP

Fermé
nikizim Messages postés 67 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 10 avril 2009 - 10 avril 2009 à 09:58
nikizim Messages postés 67 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 10 avril 2009 - 10 avril 2009 à 13:20
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 67 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 10 avril 2009 11
10 avril 2009 à 12:45
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 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
10 avril 2009 à 10:01
0
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
10 avril 2009 à 10:03
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
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 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
10 avril 2009 à 10:13
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
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
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
10 avril 2009 à 10:23
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 67 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 10 avril 2009 11
10 avril 2009 à 10:24
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
Bonne chance
0
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
10 avril 2009 à 11:02
bonne merde on dit :p
0
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
10 avril 2009 à 12:54
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 67 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 10 avril 2009 11
10 avril 2009 à 13:02
En faite je souhaiterais récupérer ne niveau de l'erreur lorsque l'on oublie un point virgule par exemple.
0
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 67 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 10 avril 2009 11
10 avril 2009 à 13:20
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