Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-11-2007 16:24:25

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

[1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Bonjour à tous,
J'ai un gros problème, j'ai un sale bug avec _forward().
Dès que j'appelle cette méthode, mon script par dans une boucle infini et je ne sais pas pourquoi.
J'ai un code qui marchait très bien qui ne marche plus et je ne trouve pas pourquoi. Je lutte grave.
Quelqu'un a t'il une idée?? Je suis fou...

Dernière modification par Mr.MoOx (06-11-2007 10:52:41)

Hors ligne

 

#2 05-11-2007 16:39:59

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

as tu essayer de mettre $frontController->throwExceptions(true) dans ton bootstrap  ? parfois, ca aide bien a debugger.

Hors ligne

 

#3 05-11-2007 16:40:18

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Apparement, ça ne provient pas directement de _forward...
http://www.zfforums.com/zend-framework- … ed-77.html
Je regarde ça et je tiens au jus.

Hors ligne

 

#4 05-11-2007 17:05:22

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Le truc c'est que ça boucle. D'après le lien que j'ai mis au dessus, ça viens d'un plugin. Et en l'occurence, ça viens de mon plugin d'Authentification que j'ai tiré d'un tuto de Julien. La je coince...

PS: Pour le throwExceptions(true), t'inkiète pas que je l'ai mis dès le début du dév de mon projet!

Hors ligne

 

#5 05-11-2007 18:04:16

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

As tu utilisé un débuggeur en mode pas à pas ( avec des points d'arret notamment ) ?
Avec un tel outil tu trouves le bug en quelques minutes ...

Hors ligne

 

#6 05-11-2007 18:52:52

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

ben cad que j'ai installé le zend debugger pour eclipse+pdt, mais j'arrive pas à appeller mes pages avec la bonne url.
J'arrive a appeller index.php comme si jetais sur monsite.com/index/index...  et c'est pas cool
Et bien sur j'ai rien trouvé pour m'aider... sad

PS: Un jour je serai moi aussi un pro et je ne galèrerais plus (moins?)... smile

Hors ligne

 

#7 05-11-2007 20:11:26

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

dans pdt, tu peux choisir xdebug aussi...

Hors ligne

 

#8 05-11-2007 20:16:39

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Perso, je ne suis pas arrivé a faire fonctionner le zend debugger sur ma config, mais ça marche nickel avec Xdebug. J'ai suivit cette procédure :

http://inkompetent.se/wiki/php/remote_d … and_xdebug

Pour ce qui utilise XAMPP :

http://www.bluejacketsoftware.com/index … &id=20

Hors ligne

 

#9 05-11-2007 20:49:40

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Oula, j'ai un peu trimé pour mettre pdt, alors je vais pas me lancé dans xdebug.
Je voudrais juste savoir à la limite comment faire pour debugger à partir d'un url et non d'un fichier.
Par exemple je voudrais pouvoir débugger http://localhost/monprojet/controller/action ...

Hors ligne

 

#10 05-11-2007 21:54:29

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Pour faire du débugage distant il faut que tu ai installé, si tu ne l'as pas déjà fait, "Zend Debugger server" en tant que module php sur ta plateforme de développement : .dll sur windows et .so sur linux téléchargeable ici http://downloads.zend.com/pdt/server-debugger/

Les explications sont ici :
http://www.thierryb.net/pdtwiki/index.p … d_Debugger

Mais c'est vrais que pour trouver des infos sur l'installation et l'utilisation de PDT c'est un peu la misère !!!

Hors ligne

 

#11 06-11-2007 09:13:27

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Tout ça c'est fait comme je l'ai dis plus haut.
Le truc que je n'arrive pas à faire avec le debugger, c'est de débuggé à partir d'un URL et non d'un simple script (dans le cas du zf, tout passe par l'index.php, mais je n'arrive pas à "simuler" les url propres qui permettent de trouver les controller, actions et autres paramètres...

Hors ligne

 

#12 06-11-2007 09:47:58

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Pour pdt, le plus simple, pour commencer, c'est de télécharger la version all-in-once. Elle contient toutes les dépendances et après un simple unzip, c'est prêt.

Pour debugger dans la version 1.0 de pdt, 2 debugger sont préconfigurés. Xdebug qui a besoin du module xdebug sur le serveur et zend debugger qui nécessite le zend debugger server, lui même est inclue dans la zend plate-forme.
Attention, l'utilisation de zend debugger implique automatiquement l'utilisation du module zend optimiser. et Zend optimizer est incompatible avec apc.

Les urls fourni par 2mx décrivent globalement ce qu'il faut faire pour utiliser xdebug, en revanche, elle sont un peu dépassé car toute la section concernant pdt est basé sur l'époque ou pdt n'incluait pas xdebug. Les boites de dialogue ont un peu évolués aussi.
En gros, il faut télécharger (ou compiler) les binaires xdebug pour le serveur, sur le site xdebug.org, sur la droite, tu as pour windows des dll toutes prête. Tu prend celle qui correspond a ta version de php. et tu doit avoir un fichier du genre php_xdebug-2.0.1-5.2.1.dll pour la version 5.2.1 et + de php.
Tu met cette dll avec dans le répertoire qui contient les extensions de php (pour wamp, c'est wamp/php/ext/) ,  ou dans le répertoire de ton choix en fait, ca n'a pas vraiment d'importance.

Ensuite, il faut charger cette dll via le php.ini. Comme il peut y en avoir plusieurs, fait un phpinfo() et regarde l'entrée "Loaded Configuration File", et tu saura ou se trouve le php.ini qui est utilisé actuellement par ton serveur.
Recherche une section [xdebug], si elle n'existe pas, tu la créée.
et tu ajoutes zend_extension_ts="chemin ou tu as mis ta dll /php_xdebug-2.0.1-5.2.1.dll"

Tant que tu es la tu peux ajouter tout de suite quelques entrées de configuration xdebug, je te donne les miennes dont l'explication se trouve là http://www.xdebug.org/docs/all_settings

xdebug.remote_enable=1
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.show_local_vars=1
xdebug.profiler_enable_trigger=1;
xdebug.profiler_output_dir = "d:/wamp/www/xdebug/profiling"

Une fois ceci fait, il faut relancer apache pour prendre en compte le nouveau php.ini et charger la dll xdebug.
Tu vérifie directement dans phpinfo() que la dll xdebug est bien chargée, tu doit avoir une section xdebug décrivant la configuration actuelle de xdebug. Tant que tu n'a pas la section xdebug, inutile d'aller plus loin.

Dans pdt, assure toi que le port xdebug concorde avec ce que tu as mis dans le php.ini via le menu windows/preferences puis /generale/php/debug (9000 par default je crois)
En suite tu crées le lanceur.
Ouvres dans pdt la boite de dialogue debug via les icone ou le menu run/open debug dialog.
Tu cliques sur php web page et sur la premiere icone de la barre d'outil de la boite (une page avec un +) new launch configuration.
- Donne un nom à ta config en haut,
- choisis xdebug dans server debugger
- Browse File/Project pour choisir un fichier (en l'occurence, ton index.php)
- En bas, dans url, ne met pas auto générate sauf si l'url correspond a ce que tu utilises mais met l'url que tu souhaites débugger.
- Pour plus de commodité par la suite, tu peux allez dans l'onglet common et cocher debug dans display in favorite.

- Dans le fichier sources qui te pose problème, tu met un point d'arret en double clickant à gauche des numéros de lignes ou clic droit au même endroit puis toogle breakpoint.

Ensuite, tu soit tu passe par le dialogue debug et tu lance la config que tu as créés, soit tu utlises l'entrée du menu si tu as coché favorite dans l'onglet common. Ce menu est accéssible via la fleche a droite du 'cafard' dans la barre d'outil. Il vas te demander a changer de perspective en php debug, répond OK.
et s'arrêtera au breakpoint, tu devrais voir le contenu des variables en cours dans la vue ad hoc.

Bonne chance smile

Hors ligne

 

#13 06-11-2007 10:01:34

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

C'est très gentil à toi de m'avoir bien expliquer tout ça, mais je l'ai déjà fait (enfin c'est pareille qu'avec le zend debugger). J'utilise Wamp et j'ai pas eu de mal à installer le zend optimizer etc...
Les poitns d'arrêts & co je connais aussi (je faisais ça en C++, quand j'étais encore à l'école smile ).
Le truc ou je galère c'est  par rapport à l'url. Mais là je crois que j'ai pigé le truc. En fait mon projet n'était pas un projet PHP (mais un Général, je m'étais pas pris la tête...).

Je pense que j'vais y arrivé à force.

Merci à vous. Je vous tiens au jus.

Hors ligne

 

#14 06-11-2007 10:02:40

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Mr.MoOx a écrit:

Tout ça c'est fait comme je l'ai dis plus haut. ...

Ok ! Excuses moi, je n'étais pas sur.

Sinon pour spécifier l'url exacte je procède ainsi :

Clique sur  bouton Debug > Open Debug Dialog...
Une sur-fenêtre s'ouvre. Elle permet entre autre de configurer les informations de débuggage.
Sur la gauche clique sur PHP web page > index et là tu accède au paramètres de configuration.
Si index n'existe pas il faut créer un nouveau profil de débuggage,
Tout en bas il y a un  fieldset  URL rentre ici l'url que tu veux débugger.
Puis clique sur le bouton debug.

Dernière modification par 2mx (06-11-2007 10:35:31)

Hors ligne

 

#15 06-11-2007 10:23:07

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Bon j'ai réussi à lancé le debugger sur ma page. Houhouuuu ! (encore merci à vous tous)
(Mais par contre j'ai pas encore trouvé pourquoi ça boucle... Chaque chose en son temps smile )

Hors ligne

 

#16 06-11-2007 10:52:05

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Haaa! J'ai enfin trouvé!
C'est dans mon Plugin Auth (tiré du tuto de Julien je le rappelle) il y'a le code suivant:

Code:

    $controller = $request->controller;
    $action = $request->action;
    $module = $request->module;

En fait, les appels comme ça $request->controller, ne renvois pas ce qu'il faut. Ils ne renvoient pas la nouvelle action.
Dans mon cas, je suis dans  SearchController > verboseAction qui forward vers SearchController > listingAction, et lorsque mon plugin est recréé (à cause du forward), les noms des controllers/actions ne sont pas bons !!
Du coup, ça reboucle comme un c**.

http://files.moox.fr/img/screenshots/dev/zend-framework-bug-bad-retour.jpg

Je vais chercher autre chose pour récup le nom de controller /action...

Code:

    $controller = $request->getControllerName();
    $action = $request->getActionName();
    $module = $request->getModuleName();

Ca marche !!!! Yipikiaeeeee!

(encore merci à vous!)

Hors ligne

 

#17 06-11-2007 15:21:31

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Mr.MoOx a écrit:

Bon j'ai réussi à lancé le debugger sur ma page. Houhouuuu ! (encore merci à vous tous)
(Mais par contre j'ai pas encore trouvé pourquoi ça boucle... Chaque chose en son temps smile )

Et comment t'a fais  ?


Société : Direct Info Service

Hors ligne

 

#18 06-11-2007 15:24:03

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

TiTerm a écrit:

Ouvres dans pdt la boite de dialogue debug via les icone ou le menu run/open debug dialog.
Tu cliques sur php web page et sur la premiere icone de la barre d'outil de la boite (une page avec un +) new launch configuration.
- Donne un nom à ta config en haut,
- choisis xdebug dans server debugger
- Browse File/Project pour choisir un fichier (en l'occurence, ton index.php)
- En bas, dans url, ne met pas auto générate sauf si l'url correspond a ce que tu utilises mais met l'url que tu souhaites débugger.

Hors ligne

 

#19 07-11-2007 09:14:32

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

TiTerm,

il serrait intéressant que tu créais une autre discutions avec tes explications sur PDT et les debugger Xdebud et zendDebugger. Vu le peu d'informations que l'on trouve sur le sujet ça mériterai d'être mieux accroché par les moteur de recherche pour que d'autre puissent en profité. smile

Hors ligne

 

#20 07-11-2007 09:52:29

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Je me suis batu toute l'après midi hier avec, PDT + xdebug
Et ca a enfin fonctionné quand j'ai installé le Zend Debugger client

http://www.thierryb.net/pdtwiki/index.p … d_Debugger

Installing Zend Debugger client

To install the Zend Executable Debugger plug-in using the Update Manager, follow the instructions I provided earlier to set up a new update site using the following information:

PHP Development Tool (PDT)
UPDATE URL: http://downloads.zend.com/pdt

Pourtant je pensais qu'il est requis uniquement si l'on utilise l'extension ZendDebugger


Société : Direct Info Service

Hors ligne

 

#21 07-11-2007 10:18:04

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

A ma connaissance, il n'y a pas de liaison entre xdebug et le client zend debugger. Il sont meme plutot incompatible puisque le zend debugger requière zend optimizer alors que xdebug est incompatible avec zend optimizer. Tu peut installer les 2 mais pas les charger en meme temps.

Hors ligne

 

#22 07-11-2007 10:20:22

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Oui pour les extensions php.
Mais en tout cas tout à fonctionner une fois que j'ai installé le client pour PDT comme expliqué dans la parti que j'ai cité au dessus :s..
Bizarre :s


Société : Direct Info Service

Hors ligne

 

#23 14-11-2007 14:23:35

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

2 liens intéressants :

Squash bugs in PHP applications with Xdebug
http://www.ibm.com/developerworks/opens … hp-xdebug/

Squash bugs in PHP applications with Zend Debugger
http://www.ibm.com/developerworks/libra … ca=dkw-php

Hors ligne

 

#24 29-02-2008 18:00:50

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

Re: [1.0.2] [Résolu] _forward() qui plante bien à cause d'un plugin

Bonjour,

J'ai suivi à la lettre l'installation de xdebug décrite par TiTerm et mon xdebug se fou royalement de mes breakpoint. Je précise également que mon dossier profiling est vide, et que xdebug apparait bien dans mon phpinfo (phpinfo à consulter ici : http://www.mon-appli-zf.fr/phpinfo.htm).

J'ai déjà utilisé xdebug avant sans soucis, là je suis perdu lors de ma réinstalle. J'utilise wampserver2.0, eclipse 3.3.1.1

Une idée ?

Geoffrey

EDIT : mon dossier profiling se remplit quand je rajoute "?XDEBUG_PROFILE" à la fin de mon url, par contre, toujours pas de breakpoint actif

Dernière modification par Geoffrey (29-02-2008 20:50:56)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages