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 :

plantage affichage barre debug [1.x]


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut plantage affichage barre debug
    Bonjour à tous,
    cela fait 2 jours que je me bats avec mon code sans succès, peut-être que quelqu'un déjà rencontré ce problème :
    Lorsque je valide un formulaire, l'affichage de la page plante, il m'apparaît une fraction du code de la barre de débogage, puis le code source de la page qui aurait du s'afficher, le tout "en brut".
    Cela n'arrive que lorsque je poste un formulaire particulier et que celui-ci ressort invalide après un bind. Ce même formulaire utilisé dans une autre application fonctionne très bien.
    Ce qui est embêtant c'est qu'en mode production cela fonctionne très bien.
    Si je change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $configuration = ProjectConfiguration::getApplicationConfiguration('publiq', 'dev', false);
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $configuration = ProjectConfiguration::getApplicationConfiguration('publiq', 'dev', true);
    ça fonctionne et j'ai toujours la barre qui apparaît. Est-ce que je vais perdre des informations si je laisse comme ça ?
    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Tu veux dire que, sur ce formulaire, tu as du code de la barre de debug qui s'affiche alors que tu n'es pas en mode débug ???
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Oups, non je vois que j'ai inversé les 2 lignes de code, je vais corriger mon premier message de ce pas.
    Donc non mon souci est que si je laisse la barre de debug apparente, la page affiche du code brut (fond blanc et texte), avec en début de page une partie du code de la barre de debug, et ensuite le code fonctionnel de la page.

    Si je prends le code "fonctionnel" et que je le copie dans un fichier html, tout s'affiche correctement.

    Je n'arrive pas à localiser le problème, mais j'ai progressé :
    J'ai essayé de mettre chaque champ un par un, ils fonctionnent tous. Quand j'affiche le formulaire entier, ça plante.

    Précision : il n'y a que quand il y a bind du formulaire que ça plante, le premier affichage se fait bien.
    J'ai fini par voir que si je commente la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $clean = $validator->clean($clean);
    dans le code suivant de sfValidatorAnd:
    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
      protected function doClean($value)
      {
        $clean = $value;
        $errors = array();
        foreach ($this->validators as $validator)
        {
          try
          {
               $clean = $validator->clean($clean);
          }
          catch (sfValidatorError $e)
          {
            $errors[] = $e;
     
            if ($this->getOption('halt_on_error'))
            {
              break;
            }
          }
        }
     
        if (count($errors))
        {
          if ($this->getMessage('invalid'))
          {
            throw new sfValidatorError($this, 'invalid', array('value' => $value));
          }
     
          throw new sfValidatorErrorSchema($this, $errors);
        }
     
        return $clean;
      }
    ça passe !
    Je crois qu'à ce moment c'est une vérification d'id existant ou pas dans la base, mais je n'en suis pas sûr...

    Merci de te pencher sur mon cas...

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    J'ai pas compris si c'était bon ou pas ...
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Arf, j'ai du mal à m'expliquer clairement on dirait

    En fait dans mon premier message il faut inverser les 2 lignes, je m'étais trompé, et je ne peux plus l'éditer apparemment...

    Pour faire simple, si c'est le point qui n'est pas clair :
    Avec la barre de debug : plantage
    sans la barre de debug : pas de souci

    Merci de ton aide

  6. #6
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Tu es sur que tu n'aurais pas plutôt :

    Avec debug -> plantage
    Sans debug -> on ne voit pas le plantage

    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Oui on peut l'interpréter comme ça aussi, mais ça ne m'avance pas beaucoup

  8. #8
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Si je comprend bien, en mode dev avec la barre de débug ça plante. Mais en mode debug, qu'est-ce que ça donne ? Si ça plante en mode debug, tu devrais avoir des informations intéressantes dans le fichier de log.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Désolé d'être resté sans réponse si longtemps, j'ai du essayer d'avancer malgré ce souci.
    Je rencontre le problème de plus en plus souvent.
    En fait je me suis rendu que ça m'arrive par exemple quand je me trompe dans le nom d'une variable...
    Au lieu d'afficher un message d'erreur php du style "undefined variable...", eh bien ça m'affiche la page comme je l'ai décrite dans mon premier post : Du code source brut sur fond blanc.
    Quand j'ai de la chance je trouve un message d'erreur "caché" au milieu en faisant Ctrl+F "Warning" ou "notice", mais la plupart du temps il n'y a rien...
    Au lieu de gagner du temps j'en perds énormément.

    Si ça vous inspire...

    Merci

  10. #10
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    C'est vraiment bizarre, de plus je n'ai jamais entendu parlé d'un problème de ce genre.

    Je verrais bien un problème lié à la configuration de ton environnement. As-tu essayé sur une autres machine ?
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Malheureusement je n'ai pas d'autre machine pour tester pour l'instant.
    Mais je confirme que cela m'arrive de plus en plus.
    Si j'utilise une variable qui n'existe pas par exemple, il plante comme décrit avant. Et je n'ai aucun message d'erreur dans ce code "brut", je dois reprendre ligne par ligne, "à l'ancienne"...
    Je laisse le post ouvert, si je trouve une explication un jour ou que je teste sur une autre machine, je viendrai le compléter.

    Merci pour votre aide.

  12. #12
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Tu peux toujours monter un serveur dans une machine virtuel sur ta machine.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Je n'ai jamais utilisé de machine virtuelle mais :
    J'ai créé un petit projet tout simple qui plante à chaque fois pour illustrer mon souci !
    J'ai mis tout le code, vous pouvez tester en 5 minutes je pense !
    le but est d'afficher une collection de formulaires articles au sein d'un formulaire page.
    mon schema.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Page:
      columns:
        titre: { type: string(50), notnull: true }
    Article:
      columns:
        page_id: { type: integer(5), notnull: true }
        titre: { type: string(50), notnull: true }
      relations:
        Page: { onDelete: cascade, foreignAlias: Articles }
    Les commandes symfony :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    php symfony generate:app frontend
    php symfony do:build --all --and-load
    php symfony do:generate-module frontend page Page --non-verbose-templates
    je crée le fichier ArticlesCollection.class.php dans /lib/form/doctrine
    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
     
    <?php
    class ArticlesCollection extends sfForm
    {
        public function configure()
        {
            if(!$page = $this->getOption('page'))
                    throw new InvalidArgumentException ('you must provide a page object.');
     
            $articles = $page->getArticles();
     
            for($i = 0; $i < PageForm::NB_ARTICLES_MAX; $i++)
            {
              $article = new article();
              $article->setPage($page);
              $form = new articleForm($article);
              //var_dump($form); exit;
              $this->embedForm('article'.$i,$form);
            }
     
            //$this->mergePostValidator(new articleValidatorSchema());
        }
    }
    ?>
    Je modifie ma classe PageForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class PageForm extends BasePageForm
    {
      Const NB_ARTICLES_MAX = 5;
     
      public function configure()
      {
        $articlesForm = new ArticlesCollection(array(),array('page'=>$this->getObject()));
        $this->embedForm('eArticles',$articlesForm);
      }
    }
    Normalement si vous allez sur mon module frontend_dev.php/page/edit/id/1
    Vous voyez bien 5 sous-formulaires articles

    Maintenant disons que j'ai fait une faute de frappe dans /lib/form/doctrine/ArticlesCollection.class.php
    et que le code est celui-ci :
    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
     
    <?php
    class ArticlesCollection extends sfForm
    {
        public function configure()
        {
            if(!$page = $this->getOption('page'))
                    throw new InvalidArgumentException ('you must provide a page object.');
     
            $articles = $page->getArticles();
     
            for($i = 0; $i < PageForm::NB_ARTICLES_MAX; $i++)
            {
              $article = new article();
              $article->setPage($paeg);
              $form = new articleForm($article);
              //var_dump($form); exit;
              $this->embedForm('article'.$i,$form);
            }
     
            //$this->mergePostValidator(new articleValidatorSchema());
        }
    }
    ?>
    Eh bien lorsque je retourne sur frontend_dev.php/page/edit/id/1
    J'ai une page de code brut...
    Cette fois on va pouvoir savoir si c'est ma config...
    Merci de votre aide !

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    J'ai une piste !
    J'utilisais xdebug, et j'ai vu que ça prenait beaucoup de place sur mon disque, j'ai donc désactivé tout ce qui était xdebug dans mon php.ini
    Et j'ai réussi à avoir un message d'erreur propre !
    Si vous essayez le projet que j'ai mis au post précédent, vous aurez surement ce message :
    Notice: Undefined variable: paeg in D:\dev\_0projets\web\sfprojects\test\test_bug_form_validator\lib\form\doctrine\ArticlesCollection.class.php on line 14

    Maintenant, si vous passez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const NB_ARTICLES_MAX = 5;
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const NB_ARTICLES_MAX = 50;
    dans /lib/form/doctrine/Page.class.php
    Peut-être que vous verrez comme moi du code brut, sinon augmentez, augmentez...
    ça sent le problème de mémoire non ?
    Help !!

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Nouvelle piste...

    J'ai un module avec un fichier indexSuccess.php qui me fait le plantage habituel...
    Dans ce fichier, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include_partial('global/form_global_errors',array('form'=>$form)) ?>
    Le fichier _form_global_errors.php contient le code suivant :
    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
    <?php if($form->hasErrors() || $form->hasGlobalErrors()): ?>
      <div class="bloc_form_inter">
       <?php if($form->hasErrors()): ?>
          <div class="field_bloc_error" >
              <p><?php echo __('Une ou plusieurs erreurs se sont glissees dans vos reponses, elles sont mises en evidence ci-dessous...',null,'globalForms') ?>
              </p>
          </div>
      <?php endif; ?>
     
      <?php if($form->hasGlobalErrors()): ?>
          <div class="field_bloc_error" >
              <?php echo $form->renderGlobalErrors() ?>
          </div>
      <?php endif; ?>
      </div>
    <?php endif ?>
    Si je commente la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php //include_partial('global/form_global_errors',array('form'=>$form)) ?>
    et que je met le code du fichier partial directement dans indexSuccess.php, ça passe sans problème.

    J'ai essayé de modifier l'encodage du fichier, d'en créer un nouveau avec le même code, rien n'y fait...
    Je désespère...

  16. #16
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    J'ai suivi de loin...

    Je n'ai, hélas, pas trop le temps de monter un projet de test.

    Essaye de recréer un environnement vierge et de n'y mettre que le code de ton projet, pour voir.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    je reviens pour mettre [résolu] à ce sujet, j'ai fini par me décider à installer ubuntu sur mon poste en double boot, et je développe maintenant sous linux.
    Je n'ai pour l'instant eu aucun problème, à part en faisant un var_dump($variable) d'une variable contenant trop de références à d'autrres objets.
    Je pense donc bien qu'il s'agit d'un souci de memory_limit que je n'ai pas réussi à régler sous windows, qui ne me mettait souvent rien dans les logs d'ailleurs. Il n'y a qu'une fois sous linux et en le faisant exprès que j'ai pu obtenir un message d'erreur dans les logs m'indiquant cette cause...
    J'utilisais wampserver sous windows.
    Bref, c'était bien un problème d'environement, merci michel pour tes conseils.

    Je n'avais jamais travaillé sous linux avant, donc je découvre au jour le jour.
    J'en profite pour donner les avantages que j'ai trouvé à être sous linux :
    - ma config locale est très proche de la config de mon serveur de prod, ce qui limite grandement les erreurs sur le serveur de prod.
    - je peux enfin utiliser la commande deploy de symfony, quel bonheur !!
    - je suis obligé de travailler davantage en ligne de commande, ce qui me permet de mieux naviguer sur mon serveur de prod.

    je ne liste pas les inconvénients, car ils sont liés à mon manque de connaissance du système.
    En tout cas je suis ravi

    Encore merci à ceux qui se seront penchés sur mon cas.

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

Discussions similaires

  1. [CS4] PROBLEME AFFICHAGE BARRE DE MENU SPRY HORIZONTALE
    Par lululafourmi dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 11/03/2009, 17h05
  2. [WD11] Affichage barre des messages
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 4
    Dernier message: 25/09/2008, 14h00
  3. [IE] Problème d'affichage barre de menu
    Par Le Pharaon dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 23/06/2006, 16h11
  4. Affichage barre titre
    Par jmjmjm dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 11/01/2006, 18h04
  5. Recupération lors d'un plantage (en mode debug)
    Par aRCHiMeD dans le forum MFC
    Réponses: 3
    Dernier message: 15/01/2004, 17h09

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