IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

gestion des erreurs [À faire]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut gestion des erreurs
    Bonjour a tous , pour le moment je me fais un pti site en php avec pas mal de chose .
    etant donnée que je n'aimerai pas que mes visiteurs voyent d'eventuelle message d'erreurs je me demandais comment faire pour que les message d'erreurs ne sois pas vu mais ecris dans un fichiers texte par exemple ???
    je comprend bien le php mais pour ce genre de chose pas tres repandue je donne ma langue au chat .
    j'ai vu 1 ou 2 script pour gerer l'affichage d'erreur mais il etais tres mauvais et incomprehensible .
    Donc je me réfère a vous , ce site est une veritable réference .
    Donc si vous savez me conseiller sur le sujet
    merci a vous

  2. #2
    Membre émérite Avatar de trattos
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 000
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 000
    Par défaut
    Ben fait en sorte d'enregistrer ce message d'erreur dans ta base de données comme ça tu peux tout récupérer et ça reste transparant pour tes visiteurs.

  3. #3
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Bientôt sur ce merveilleux site, un magnifique tuto sur la gestion des erreurs...

    En attendant tu peux par exemple utiliser les outils suivants : error_reporting pour fixer le niveau des erreurs à considérer, set_error_handler pour utiliser des gestionnaires d'erreur personnalisés, ou alors tu peux modifier dans ton php.ini la clé log_errors (c'est sans doute ça que tu veux faire).

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Avec display_errors = 0 bien entendu

  5. #5
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Citation Envoyé par BoneBreaker
    Avec display_errors = 0 bien entendu
    Ca ne logge pas les erreurs, si je ne m'abuse, mais oui ça évite l'affichage.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    merci a vous je vais jeter un oeil a la doc , j'ai vu qu'il y avais un exemple qui n'est pas mal du tout mais un peut compliquer au premier abort .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    <?php
    // Nous allons faire notre propre gestion
    error_reporting(0);
     
    // Fonction spéciale de gestion des erreurs
    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_ERRROR => '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);
       }
    }
     
     
    function distance($vect1, $vect2)
    {
       if (!is_array($vect1) || !is_array($vect2)) {
           trigger_error("Incorrect parameters, arrays expected", E_USER_ERROR);
           return NULL;
       }
     
       if (count($vect1) != count($vect2)) {
           trigger_error("Vectors need to be of the same size", E_USER_ERROR);
           return NULL;
       }
     
       for ($i=0; $i<count($vect1); $i++) {
           $c1 = $vect1[$i]; $c2 = $vect2[$i];
           $d = 0.0;
           if (!is_numeric($c1)) {
               trigger_error("Coordinate $i in vector 1 is not a number, using zero",
                               E_USER_WARNING);
               $c1 = 0.0;
           }
           if (!is_numeric($c2)) {
               trigger_error("Coordinate $i in vector 2 is not a number, using zero",
                               E_USER_WARNING);
               $c2 = 0.0;
           }
           $d += $c2*$c2 - $c1*$c1;
       }
       return sqrt($d);
    }
     
    $old_error_handler = set_error_handler("userErrorHandler");
     
    // constante non définie, qui génère une alerte
    $t = I_AM_NOT_DEFINED;
     
    // définition de quelques vecteurs
    $a = array (2, 3, "foo");
    $b = array (5.5, 4.3, -1.6);
    $c = array (1, -3);
     
    // génère une erreur utilisateur
    $t1 = distance ($c, $b)."\n";
     
    // génère une erreur utilisateur
    $t2 = distance ($b, "i am not an array")."\n";
     
    // Génère une alerte
    $t3 = distance ($a, $b)."\n";
     
    ?>
    je ne comprend pas trop cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // 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);
       }
    error_log sauvegarde l'erreur dans le dossier indiquer ou c'est un dossier par default ou se trouve apache ?
    desolé si je m'exprime mal , faut le temps que la piece tombe lol

    Eusebius vous m'avez fais rire avec cette phrase :

    Bientôt sur ce merveilleux site, un magnifique tuto sur la gestion des erreurs...

Discussions similaires

  1. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  2. [struts][Datasource]Gestion des erreurs
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/09/2004, 16h51
  3. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo