Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/08/2011, 16h24   #1
Invité de passage
 
Inscription : février 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 15
Points : 2
Points : 2
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 :
$configuration = ProjectConfiguration::getApplicationConfiguration('publiq', 'dev', false);
en
Code :
$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 !
jujuvolley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 14h16   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 14h35   #3
Invité de passage
 
Inscription : février 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 15
Points : 2
Points : 2
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 :
$clean = $validator->clean($clean);
dans le code suivant de sfValidatorAnd:
Code :
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...
jujuvolley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 19h28   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 19h50   #5
Invité de passage
 
Inscription : février 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 15
Points : 2
Points : 2
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
jujuvolley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 12h36   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 17h14   #7
Invité de passage
 
Inscription : février 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 15
Points : 2
Points : 2
Oui on peut l'interpréter comme ça aussi, mais ça ne m'avance pas beaucoup
jujuvolley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 10h30   #8
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 769
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 769
Points : 788
Points : 788
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.
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 20h49   #9
Invité de passage
 
Inscription : février 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 15
Points : 2
Points : 2
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
jujuvolley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 00h40   #10
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 10h59   #11
Invité de passage
 
Inscription : février 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 15
Points : 2
Points : 2
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.
jujuvolley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 15h45   #12
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 17h56   #13
Invité de passage
 
Inscription : février 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 15
Points : 2
Points : 2
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 :
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 :
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 :
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 :
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 :
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 !
jujuvolley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 18h38   #14
Invité de passage
 
Inscription : février 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 15
Points : 2
Points : 2
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 :
Const NB_ARTICLES_MAX = 5;
à
Code :
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 !!
jujuvolley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 10h15   #15
Invité de passage
 
Inscription : février 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 15
Points : 2
Points : 2
Nouvelle piste...

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

Code :
<?php include_partial('global/form_global_errors',array('form'=>$form)) ?>
Le fichier _form_global_errors.php contient le code suivant :
Code :
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 :
<?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...
jujuvolley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 12h59   #16
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 11h41   #17
Invité de passage
 
Inscription : février 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 15
Points : 2
Points : 2
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.
jujuvolley est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h26.


 
 
 
 
Partenaires

Hébergement Web