PHP Remote Debugging : utilisation d’Eclipse

Dans ce qui suit, la version d’Eclipse utilisée est la 3.6 (nommée « Helios »). Le plus pratique est d’utiliser le package « Eclipse PHP », disponible sur le site http://www.eclipse.org/pdt/. Après installation, une mise à jour est recommandée.

Pour effectuer du remote debugging avec Eclipse, il faut compléter le paramétrage de Xdebug dans le fichier php.ini utilisé par WampServer.
Dans la pratique, on n’aura besoin de modifier la valeur par défaut que d’un nombre limité de variables, principalement :
xdebug.remote_enable=1
xdebug.idekey = "ECLIPSE_DBGP" : cette clé correspond à l’emploi de l’IDE Eclipse
xdebug.remote_host=xxx : il s’agit du nom (le « host name ») ou de  l’adresse ip du poste de développement utilisant Eclipse
De plus :
- si vous voulez que la connexion de debugging démarre seulement lorsque survient une erreur : xdebug.remote_mode=jit (sinon, « req » est la valeur par défaut),
- si vous voulez utiliser un port de connexion nn autre que 9000 : xdebug.remote_port=nn (9000 est la valeur par défaut).

 

Pour travailler sur un serveur distant, plusieurs solutions sont disponibles. Une des solutions les plus simples à mettre en œuvre est d’utiliser un partage de fichiers avec le serveur hébergeant les fichiers php visés. Si ce serveur est sous Windows Serveur, c’est particulièrement aisé à réaliser. Pour qu’Eclipse puisse utiliser une telle connexion, le plus simple est d’utiliser le framework « Target Management (RES) », disponible sur le site http://www.eclipse.org/dsdp/tm/ . Il est automatiquement installé à la suite de l’installation d’Eclipse PHP, suivie de la mise à jour recommandée ci-dessus.

L’objet n’est pas ici de décrire l’organisation à mettre en place pour un développement. La taille de l’équipe de développement, l’existence de différentes plates-formes de développement, d’intégration, de pré-production, etc., ainsi que la question de la gestion de sources, imposent bien sûr des règles de travail pour chaque développeur, et par conséquence sur sa manière d’utiliser Eclipse. On se limitera donc ici au debugging d’un fichier PHP se trouvant sur un serveur distant.

Il suffit de mapper le partage des fichiers php visés avec un drive (Z: par exemple) sur le poste utilisant Eclipse. Ceci permet de créer ensuite un projet php directement dans ce dossier partagé. L’existence de ce projet permet alors de définir une « configuration d’exécution », qui permettra de procéder au remote debugging souhaité.

Dans la « perspective PHP » de ce projet, qui doit maintenant contenir les fichiers php visés, le menu « Projet / Properties » affiche une liste d’items. L’item « PHP Debug » affiche un écran qui permet d’activer des propriétés particulières de ce projet (d’autres manières de procéder sont évidemment possible, y compris modifier ces réglages au niveau de tout le Workspace).
Ces propriétés particulières doivent bien sûr figurer parmi les préférences disponibles. Il faut donc :
- ou bien préalablement avoir défini ces préférences particulières, par le menu « Windows / Preferences »,
- ou bien, à l’occasion du paramétrage de ce projet, utiliser les liens « Configure…», « PHP Servers…», etc., qui ne font qu’ouvrir au bon endroit cette fenêtre des préférences, pour y ajouter celles qu’utilisera ce projet.

Pour « PHP Debugger: », choisir « XDebug » à la place du debugger par défaut « Zend Debugger ». Le lien « Configure…» permet par exemple de changer le port de communication avec l’extension xdebug (9000 est la valeur par défaut de ce port).
Pour « Server: », choisir le serveur Apache distant visé. L’onglet « Path Mapping », affiche un écran qui permet d’établir une liste de mappages entre le serveur et votre projet dans votre Workspace. La mise au point d’un tel mappage répond à des règles souvent jugées obscures par les développeurs, qui privilégient ici la méthode « des essais et des erreurs ». En fait cela dépend de la configuration du serveur Apache visé, d’éventuels Alias, ou de « Virtual Hosts ». Pour éviter de sortir du cadre de ce billet, on pourra se contenter ici d’ignorer tout mappage : voir ci-dessous.
Laisser « PHP Executable: » sur « None Defined » : le moteur php qui sera utilisé se trouve sur le serveur distant, et n’est donc pas géré par votre Eclipse.

Il ne reste plus qu’à définir une « Debug Configuration » pour le fichier php que vous voulez debugger (ou, mieux encore, le fichier « main » de votre application php). En sélectionnant ce fichier dans la vue PHP (donc de votre Workspace), le menu « Run / Debug Configurations… » affiche une fenêtre, où on peut créer une configuration pour une « PHP Web Page », en cliquant sur l’icone « New launch configuration ».
Il vous faut :
- sélectionner le bon « Server Debugger: » (xdebug),
- sélectionner le bon « PHP Server: »,
- et indiquer le fichier à débugger : le bouton « Browse » vous permet de le sélectionner dans votre projet.
Selon que le « Path Mapping » de votre serveur aura été correctement renseigné ou non, on peut toujours à ce stade décocher la case « Auto Generate » de l’URL, pour forcer l’emploi d’une url fonctionnant correctement pour votre fichier à debugger. Mais cette méthode simpliste peut parfois poser des problèmes si votre application PHP utilise des rewriting d’url…
Par ailleurs, pensez toujours à cliquer sur le bouton « Apply » avant le bouton « Close».

 

 

Introduction
L’extension Xdebug
Utilisation d’Eclipse