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 avec Apache


Sujet :

Langage PHP

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 464
    Points : 474
    Points
    474
    Par défaut Gestion des erreurs avec Apache
    Bonjour,

    Sur mon application, en production, je loggue les erreurs php avec un trigger personnalisé tout au moins, les erreurs php non fatales.

    Pour les erreurs fatales, je dois passer par une directive dans le fichier htaccess.

    Ce fichier là doit retourne une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    function toto()
    {echo 'toto';}
    function toto()
    {echo 'toto';}
    ?>
    à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PHP Fatal error:  Cannot redeclare toto() (previously declared in /home/web/kiplante.php:3) in /home/web/kiplante.php on line 5
    Mais je n'arrive pas à logger cette erreur.
    J'ai mis dans mon htaccess ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php_value error_reporting x
    Comme j'ai mon trigger pour les erreurs non fatales, je ne voudrais logger avec htaccess uniquement les erreurs fatales.
    J'ai testé sans succès plusieurs valeurs x : 1,2,4,8,128, 16384, ...

    Celles qui marchent sont : 30719, 999999999, -1

    En toute logique, je devrais avoir 4 maximum et logger mon erreur non ?

    Merci de vos lumières.

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Si une erreur fatale n'est pas enregistrée dans le fichier php_errors.log, c'est que peut être que le log_errors est défini à 0, non ?


    Pourquoi veux tu logguer uniquement les erreurs fatales ?
    Ca me parais un peu bizarre, il vaut mieux logguer toutes les erreurs non ?
    Comment fais tu pour être au courant des autres erreurs alors ?

    D'ailleurs, si tu on souhaite logger uniquement les erreurs fatales, ça sous entend qu'on aurait défini le log_errors à 0 pour justement éviter de logger les autres erreurs.
    Du coup, ça va empêcher de logger les erreurs fatales.


    La seule solution que je vois là, c'est de détecter dans son code lorsqu'une erreur fatale survient, et ensuite logger l'erreur soit même avec du code donc.
    Cependant, il me semble qui soit impossible de faire ça, car Php stop net le script lors d'une erreur fatale.
    A coté de ça, j'ai lu dans ce même forum (je ne sais plus où par contre) qu'avec la fonction register_shutdown_function() serait un moyen détourné pour permettre ça.
    Mais bon, faut voir.


    D'après mes connaissances, il me semble que la valeur qu'on définie dans la error_reporting ne permet pas de capturer une erreur fatale.
    Ce ne serait donc pas là qu'il faudrait agir selon moi.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 464
    Points : 474
    Points
    474
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Salut

    Si une erreur fatale n'est pas enregistrée dans le fichier php_errors.log, c'est que peut être que le log_errors est défini à 0, non ?
    Non, log_errors est bien à 1. De plus je logge une erreur fatale en changeant le code error_reporting.

    Citation Envoyé par RunCodePhp Voir le message
    Pourquoi veux tu logguer uniquement les erreurs fatales ?
    Ca me parais un peu bizarre, il vaut mieux logguer toutes les erreurs non ?
    Comment fais tu pour être au courant des autres erreurs alors ?
    Tout à fait. Les autres erreurs sont gérées par un trigger personnalisée qui en plus de logger le message d'erreur logge le contexte de l'appel pour arriver à reproduire l'erreur plus facilement.
    Il n'est pas pertinent pour moi de logger les erreurs non fatales via htaccess, cela fait doublon.

    Citation Envoyé par RunCodePhp Voir le message
    D'ailleurs, si tu on souhaite logger uniquement les erreurs fatales, ça sous entend qu'on aurait défini le log_errors à 0 pour justement éviter de logger les autres erreurs.
    Du coup, ça va empêcher de logger les erreurs fatales.
    A mon sens non, c'est tout l'intérêt de la valeur "error_reporting" qui dans mon cas ne fonctionne pas comme attendu.

    Merci

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le problème est peut être l'inverse.

    Qu'est ce que tu as mis ou fait concernant le error_reporting avant que tu constate que les erreurs fatales ne soient enregistrées ?
    Donc hormis aujourd'hui de le rajouter dans le .htaccess en essayant toute sorte de valeur.
    Agit tu sur celle ci dans ton code avec un ini_set() ou la fonction error_reporting() ?

    Utilise tu la fonction set_error_handler() pour créé ton propre gestionnaire ?

Discussions similaires

  1. Gestion des erreur avec aspSmartUpload
    Par zooffy dans le forum ASP
    Réponses: 2
    Dernier message: 07/12/2007, 09h39
  2. gestion des erreurs avec fichier .properties
    Par _momo dans le forum Struts 1
    Réponses: 2
    Dernier message: 20/08/2007, 14h05
  3. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57
  4. Gestion des erreurs avec setjump/longjump
    Par gege2061 dans le forum C
    Réponses: 1
    Dernier message: 05/02/2006, 15h51

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