Signaler

Gestion des erreurs personnalisé avec PHP [Fermé]

Posez votre question nikizim 67Messages postés jeudi 16 octobre 2008Date d'inscription 10 avril 2009 Dernière intervention - Dernière réponse le 10 avril 2009 à 13:20 par nikizim
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.
Utile
+1
plus moins
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 !
Cette réponse vous a-t-elle aidé ?  
Utile
+0
plus moins
Bonjour,

Je pense que ceci peut vous aider :
http://classes.scriptsphp.org/article.PHP-5-et-les-exceptions
Utile
+0
plus moins
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.
Utile
+0
plus moins
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
okuni 1224Messages postés jeudi 4 septembre 2008Date d'inscription 2 janvier 2014 Dernière intervention - 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
Utile
+0
plus moins
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.
Utile
+0
plus moins
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
Utile
+0
plus moins
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 ...
Utile
+0
plus moins
Bonne chance
Utile
+0
plus moins
bonne merde on dit :p
Utile
+0
plus moins
Il n'explique pas ce que représente toutes ces variables?
$errno, $errmsg, $filename, $linenum et $vars
Tu devrais trouver un exemple avec.
Utile
+0
plus moins
En faite je souhaiterais récupérer ne niveau de l'erreur lorsque l'on oublie un point virgule par exemple.
Utile
+0
plus moins
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?
Utile
+0
plus moins
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.

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !