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 :

[Tableaux] probleme avec la fonction error_log


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut [Tableaux] probleme avec la fonction error_log
    Salut j'ai un probleme avec une fonction permettant de gerer les erreurs php
    Je travail avec php5 (wamp5) en local, dans le dossier racine j'ai cree un dossier pour le projet en cours.
    La fonction doit envoyer des mail, ecrire dans un fichier ou afficher l'erreur,
    pour l'ecriture dans le fichier et affichage sur ecran ca marche mais pour ce qui est de l'envois de mail ca bloque.Pouvez vous m'indiquer pourquoi et comment y remedier?
    J'ai aussi constate que les constantes _file_ et _line_ ne sont pas toujours assigne pourquoi ?

    Voici le code que j'utilise

    // Redefinition des constantes
    define (FATAL,E_USER_ERROR);
    define (ERROR,E_USER_WARNING);
    define (WARNING,E_USER_NOTICE);


    // Definition du niveau d'activation des erreurs
    error_reporting(FATAL + ERROR + WARNING);


    // Fonction du Gestionnaire d'erreur qui va envoyer des mail pour des erreur FATALES
    // ou faire des entree dans fichier log pour les erreurs utilisateur et warning

    function GestionErreur($errno,$errstr)
    {
    $Date = strftime ("%A %d %B %H-%M-%S");
    switch ($errno)
    {
    case FATAL :
    {
    error_log("Le $Date $PHP_AUTH_USER a provoque l'erreur FATALE $errstr à la ligne "._LINE_." du fichier "._FILE_."\n",1,"misterlove007@gmail.com");
    break;
    }
    case ERROR :
    {
    error_log("Le $Date $PHP_AUTH_USER a provoque l'erreur ERROR $errstr à la ligne "._LINE_." du fichier "._FILE_."\n",3,"test.txt");
    break;
    }
    case WARNING :
    {
    error_log("Le $Date $PHP_AUTH_USER a provoque l'erreur WARNING $errstr à la ligne "._LINE_." du fichier "._FILE_."\n",3,"test.txt");
    break;
    }
    default : echo("Le $Date $PHP_AUTH_USER a provoque l'erreur inconnue $errstr à la ligne "._LINE_." du fichier "._FILE_."\n");

    }

    }

    // Sauve le pointeur de l'ancien gestionnaire d'erreur
    $AncienGestionnaire=set_error_handler(GestionErreur);

    //Teste different types d'erreurs
    trigger_error(" Trigger d'erreur fatale ",E_USER_ERROR);
    //trigger_error(" Trigger d'erreur user ",E_USER_WARNING);
    //trigger_error(" Trigger d'erreur note ",E_USER_NOTICE);

  2. #2
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    J'vois pas le code qui envoie le mail ...
    Et quel est l'erreur ??

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Linaa
    J'vois pas le code qui envoie le mail ...
    Et quel est l'erreur ??
    error_log("Le $Date $PHP_AUTH_USER a provoque l'erreur FATALE $errstr à la ligne "._LINE_." du fichier "._FILE_."\n",1,"misterlove007@gmail.com");

    l'erreur c'est que je ne recoit pas le mail alors que je declenche une erreur avec le trigger

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Probleme partielement resolu
    C'est bon ca marche en effectuant quelques reglages sur le fichier php.ini, c'est a dire utiliser dans le fichier php.ini le serveur smtp de ma messagerie par default et pour send_mail l'adresse de messagerie l'adresse par default de l'editeur de messagerie par default de windows.
    Bon ca fonctionne ... Pour l'envois de mail mais certaines varables globales ne reagissent pas correctement dans le code, il s'agit de _line_ et _file_ qui retourne rien.

  5. #5
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    C'est __FILE__ et __LINE__ à ma connaissance (en majuscules quoi).

    PS : mais ça ne va pas faire ce que tu cherches... __FILE__ et __LINE__ vont indiquer l'endroit où ils se trouvent dans le fichier... pas la position de la fonction appelante...

  6. #6
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Par contre, ton "gestionnaire d'erreur" reçoit la bonne info en paramètre, cf la doc :
    Liste de paramètres

    error_handler
    La fonction utilisateur doit accepter deux paramètres : le code d'erreur et une chaîne décrivant le code d'erreur. Depuis, trois paramètres optionnels sont fournis en même temps : le fichier dans lequel l'erreur est survenue, la ligne à laquelle l'erreur est survenue, et le contexte dans lequel l'erreu est survenue (un tableau contenant la liste des symboles lors de l'erreur). La fonction peut être décrite comme ceci :

    handler ( int errno, string errstr [, string errfile [, int errline [, array errcontext]]] )

    errno
    Le premier paramètre errno, contient le niveau d'erreur, sous la forme d'un entier.

    errstr
    Le second paramètre errstr, contient le message d'erreur, sous forme de chaîne.

    errfile
    Le troisième paramètre, optionnel, errfile, contient le nom du fichier dans lequel l'erreur a été identifiée.

    errline
    Le quatrième paramètre, optionnel, errline, contient le numéro de ligne à laquelle l'erreur a été identifiée.

    errcontext
    Le cinquième paramètre, optionnel, errcontext, est un tableaui qui pointe sur la table des symboles actifs lors de l'erreur. En d'autres termes, errcontext contient un tableau avec toutes les variables qui existaient lorsque l'erreur a été déclenchée.

    error_types
    Sert de masque pour appeler la fonction error_handler de la même façon que l'option de configuration error_reporting contrôle les erreurs qui sont affichées. Sans le masque, error_handler sera appelé pour toutes les erreurs, quelque soit la valeur de error_reporting.

Discussions similaires

  1. [Tableaux] Probleme avec la fonction array_search()
    Par Sarrus dans le forum Langage
    Réponses: 4
    Dernier message: 23/01/2007, 09h36
  2. Réponses: 7
    Dernier message: 20/03/2006, 12h19
  3. [LG] Problème avec la Fonction ReadLn en fin de programme
    Par killermano dans le forum Langage
    Réponses: 6
    Dernier message: 23/07/2005, 15h16
  4. [LG]Probleme avec une fonction
    Par xavier1936 dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2005, 22h48

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