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

Symfony PHP Discussion :

gestion des exceptions [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre éclairé
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Par défaut gestion des exceptions
    Bonjour,

    Je travaille sur la gestion des exceptions en symfony2
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           if ($nombre > 100) {
                throw new \Exception('Pas de nombre supérieur à 100');
            } else {
                throw $this->createNotFoundException('Pas de nombre inférieur ou égal à 100');
            }
    quand j'exécute en mode dev, la page d'erreur m'affiche bien 404 si nombre est inférieur à 100 et bien 500 si nombre est supérieur à 100.

    Jusque là tout va bien.
    Par contre quand je passe en mode prod, il m'affiche dans les deux cas une page 404 :

    Oops! An Error Occurred
    The server returned a "404 Not Found".
    Something is broken. Please e-mail us at [email] and let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.
    Et je ne vois pas le message en paramètre de l'exception levée et pas de trace de page 500.
    Pourquoi ? que se passe t-il et que dois-je faire pour afficher la bonne page d'erreur et le bon message ?

    Question subsidiaire :
    Pourquoi le \ de throw new \Exception....

    Merci pour vos lumières

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    - as tu été voir dans les logs d'erreurs php du serveur en prod ?

    - tu peux modifier cette ligne du fichier app.php et de mettre prod à true
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $kernel = new AppKernel('prod', true);
    ainsi les erreurs symfony seront affichés sur le navigateur.
    bien sur , remettre prod à false une fois tes testes terminés.

    - n'oublie de vider ou supprimer le cache prod -> /app/cache/prod



    pour le / devant un new ça veut dire que Symfony va faire lui même le chargement de la bibliothèque dans ta page cad que tu n'a pas besoin de faire au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    use /symfony/........??..../Exception

  3. #3
    Membre éclairé
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Par défaut
    Bonjour,

    Je ne sais pas ce qui s'est passé avec ma réponse d'hier, mais elle s'est perdue.
    Je reprends :
    - rien dans les fichiers de log
    - j'ai fit la manip du fichier app.php

    $kernel = new AppKernel('prod', true);
    Effectivement il distingue les erreurs 500 et 404.
    Quand je rebascule à false
    $kernel = new AppKernel('prod', false);
    il continue à distinguer les erreur 404 et 500 et pourtant j'ai vidé le cache de prod.
    Est-ce normal ?

    quelle page doit-on renvoyer à l'utilisateur en prod ? qu'est-ce qu'il se fait couramment?

    Pour /Exception, je n'avais pas pensé à l'espace de noom...

    Merci pour vos informations

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    tu as bien créée une page d'erreur 500 customizé?

  5. #5
    Membre éclairé
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Par défaut
    Non, pas du tout, j'e n'ai rien modifié sur ces pages là !
    voulez-vous voir les images écran?

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    Non, mais c'est normal, symfony en prod n'a pas une page pour chaque type d'erreur, puisque l'utilisateur final n'a pas a savoir si c'est une erreur de base de données, une erreur d'url etc... donc par défaut il renvoit que du 404 (il me semble)
    Tu devrais suivre ce bout de doc symfony2

    Pour faire rapide tu dois créer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    app/Resources/TwigBundle/views/Exception/error.html.twig
    app/Resources/TwigBundle/views/Exception/error404.html.twig
    app/Resources/TwigBundle/views/Exception/error500.html.twig

  7. #7
    Membre éclairé
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Par défaut
    Merci, j'avais ce lien, je comptais l'exploiter après avoir résolu mon problème !!!
    J'en arrivais à la même conclusion que toi.
    Mais je ne comprends pas pourquoi maintenant il m'affiche la page 500 alors qu'il ne devrait plus l'afficher si on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $kernel = new AppKernel('prod', true);
    et que le cache a été vidé....
    tant pis... on dira que ce sont les mystères symfony !
    Merci pour ton aide.

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    tu as vidé le cache avec --env=prod?
    il faut a tout prix remettre $kernel = new AppKernel('prod', false); btw

  9. #9
    Membre éclairé
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Par défaut
    Merci pour vos contributions,

    Je vais donc résumer le pb, après avoir vidé le cache, redémarrer le serveur et mis l'option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $kernel = new AppKernel('prod', false);
    Est-ce normal qu'avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public function erreurAction($nombre) {
            if ($nombre > 100) {
                throw new \Exception('Pas de nombre supérieur à 100');
            } else {
                throw $this->createNotFoundException('Pas de nombre inférieur ou égal à 100');
            }
        }
    est-ce normal d'avoir ce résultat :
    Oops! An Error Occurred
    The server returned a "500 Internal Server Error".
    Something is broken. Please e-mail us at [email] and let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.
    avec cette URL :
    http://...l/web/app.php/ctrl/erreur/123
    Encore merci

  10. #10
    Membre éclairé
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Par défaut
    Merci pour vos contributions,

    Je vais donc résumer le pb, après avoir vidé le cache, redémarrer le serveur et mis l'option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $kernel = new AppKernel('prod', false);
    Est-ce normal qu'avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public function erreurAction($nombre) {
            if ($nombre > 100) {
                throw new \Exception('Pas de nombre supérieur à 100');
            } else {
                throw $this->createNotFoundException('Pas de nombre inférieur ou égal à 100');
            }
        }
    est-ce normal d'avoir ce résultat :
    Oops! An Error Occurred
    The server returned a "500 Internal Server Error".
    Something is broken. Please e-mail us at [email] and let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.
    avec cette URL :
    http://...l/web/app.php/ctrl/erreur/123
    Encore merci

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    tu déclenche un erreur not found (500) et tu as un message erreur 500 affiché, ca me semble normal oui

  12. #12
    Membre éclairé
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Par défaut
    Merci pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ADOConnect] gestion des exception en tout temps
    Par portu dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/04/2005, 19h01
  2. [ORACLE 9i] Gestion des exceptions
    Par sygale dans le forum SQL
    Réponses: 6
    Dernier message: 19/08/2004, 15h06
  3. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2004, 17h25
  4. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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