Debugger PHP5 avec Eclipse, PDT, Zend Debugger sous OSX

Avec la dernière version de PHP5 installée (5.3.1 au moment ou j'écris ces lignes), il est temps de modifier toutes ces belles applications qui ne marchent qu'en 5.2... pour qu'elle fonctionne enfin en 5.3.

Eclipse est un fantastique IDE, surtout doté de l'extension PDT mais un IDE sans points d'arrêt, c'est comme un sandwich au jambon sans jambon : un peu fade...

Voyons comment greffer le debugger sur notre splendide IDE installé sur un Mac OSX Snow Leopard

eclipse.png

Pré requis :

Le mode opératoire décrit ici est pour Snow Leopard, toutes mises à jour installées. Il est supposé que le moins de modifications ont été faites dans le système. C'est précisément pour cela que je publie ce billet, d'ailleurs, car bon nombre de tutos installent le stack php de Zend (Zend Server Community Edition), ou des packages alternatif (MAMP, XAMP...). Ici je m'en suis tenu à l'utilisation ce qui est livré avec la machine... Ce n'est pas par fainéantise, mais par choix afind e pouvoir bénéficier du packaging et des mises à jour directement par Apple. Je ne vois en effet pas l'intérêt de 'détruire' le système pour mettre en place des bidouilles...

Tout d'abord il nous faut Eclipse + PDT installé. Préférer une version 'All in one' téléchargée là partir de http://www.eclipse.org/pdt/downloads/

Apache doit être configuré et PHP activé. Ici nous supposerons que Apache est configuré pour faire du virtual hosting name based, configuration permettant de séparer les différents sites webs en cours de développement sur une même machine.

Installation du debugger

  • Télécharger "Studio Web Debugger" version 64 bits (http://www.zend.com/en/products/studio/downloads) . Ceci nécessite la création d'un compte chez Zend, mais c'est gratuit.
  • Décompresser l'archive et copier le dossier résultant /usr/lib/php/extensions/ZendDebugger-5.2.26-darwin9.5-x86_64 dans /usr/lib/php/extensions/
  • Ajouter les lignes suivantes à la fin du fichier /etc/php.ini (l'éditer avec sudo) :
zend_extension=/usr/lib/php/extensions/ZendDebugger-5.2.26-darwin9.5-x86_64/5_3_x_comp//ZendDebugger.so
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always
  • Vérifier en interactif (sous shell) que 'extension est bien chargée avec php -v. Le résultat doit montrer que le debugger est actif :
osx:extensions user$ php -v
PHP 5.3.1 (cli) (built: Feb 11 2010 02:32:22) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
   with Zend Debugger v5.2, Copyright (c) 1999-2009, by Zend Technologies

Utilisation du debugger dans Eclipse

  • Copier /usr/lib/php/extensions/ZendDebugger-5.2.26-darwin9.5-x86_64/dummy.php dans le projet php à debugger (pour les tests)
  • Dans Les préférences d'éclipse (Eclipse / Preferences / PHP / Debug / Installed Debuggers), Sélectionner le Zend Debugger et cliquer configure
  • Ne laisser que les adresses requises (ex: 127.0.0.1) dans "Client / Host IP". Ceci permet d'éviter des timeouts sur tests de multiples adresses
  • Créer sous Ecipse une nouvelle configuration de debug : "Run" / "Debug Configurations"
  • La nommer (ex : MonSite)
  • Sélectionner Zend Debugger comme interface de debug
  • Faire new en face de Php Server
  • La nommer (ex: MonSite)
  • Donner l'utl locale (ex: http://MonSite/)
  • Aller dans l'onglet Path, et mettre "path on server" = "/" et "Path on file system" = "/Users/moi/www.monsite.com". Ce chemin est évidemment à adapter en fonction de l'endroit ou vous avez domicilé la racine de votre site web.
  • Ciquer "Test Debugger"
  • En principe, le test devrait réussir. Si il y a un timeout, vérifier qu'il n'y a pas de pb sur l'adresse IP
  • Dans la vue, nommer le fichier à debugger (ex: monfichier.php)
  • Sauver
  • Le débuggage peut ensuite être lancé dans "Run" / "Debug"

Et voila, la magie opère.

Bon debug...