Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
as tu essayer de mettre $frontController->throwExceptions(true) dans ton bootstrap ? parfois, ca aide bien a debugger.
Hors ligne
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
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
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
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...
PS: Un jour je serai moi aussi un pro et je ne galèrerais plus (moins?)...
Hors ligne
dans pdt, tu peux choisir xdebug aussi...
Hors ligne
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
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
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
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
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
Hors ligne
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 ).
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
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
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 )
Hors ligne
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:
$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**.
Je vais chercher autre chose pour récup le nom de controller /action...
$controller = $request->getControllerName(); $action = $request->getActionName(); $module = $request->getModuleName();
Ca marche !!!! Yipikiaeeeee!
(encore merci à vous!)
Hors ligne
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)
Et comment t'a fais ?
Hors ligne
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
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é.
Hors ligne
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
Hors ligne
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
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
Hors ligne
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
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
Pages: 1