10.Déboguer une application PHP

10.7.Déboguer avec Eclipse PDT

10.7.1.Introduction

Nous vous avons présenté l'éditeur intégré PHP Eclipse (éclipse + les modules de gestion de PHP PDT) dans un chapitre précédent[en savoir plus]. Nous allons voir maintenant que PHP Eclipse ne se contente pas de nous apporter de l'aide lors de la saisie du code PHP. En effet, il s'agit également d'un environnement permettant le débogage par exécution pas à pas du code PHP.
Pour pouvoir profiter de ces fonctionnalités, il faut toutefois au préalable instrumenter l'exécution du code PHP. Pour cela, il convient d'installer une extension php du type de Xdebug. Pour cela, je vous invite à consulter les chapitres Installation de Xdebug et Configuration de Xdebug pour un débogage pas à pas.
Une fois ce pré-requis remplis, vous pourrez pour chacun de vos projets PHP géré dans Eclipse, lancer une exécution pas à pas en utilisant l'un des environnements d'exécutions prédéfinis dans Eclipse. Nous vous indiquerons donc dans ce chapitre comment configurer les environnements de test que ce soit pour l'exécution du script PHP en ligne de commande ou dans le cadre d'un site web en PHP.

10.7.2.Configuration

10.7.2.1.Introduction

Le lancement du script PHP en pas à pas se fait en utilisant le menu Debug As (menu contextuel du projet ou icone insecte dans la barre du haut comme vous voulez) et en sélectionnant un environnement de test. Il n'y a a priori pas d'environnement de test par défaut. Il convient donc d'en créer au moins un.
Il y a 2 cas de figures: soit il s'agit d'un script lancé en ligne de commande soit d'une application web en PHP

10.7.2.2.Pour déboguer un script lancé en ligne de commande

Il faut avant tout avoir configuré/sélectionné un environnement d'exécution PHP pour le projet ou au moins un environnement PHP par défaut pour l'ensemble des projets Eclipse. Cet environnement doit évidemment inclure Xdebug.
Pour cela, on pourra se rendre dans le menu Window/Preferences/PHP/PHP Executables
Liste des exécutables PHP dans eclipse
et cliquer sur le bouton "Add...".
Ajout d'un exécutable PHP dans eclipse
Il suffit alors de:
  • préciser un nom (généralement la version de PHP éventuellement accompagné de précisions s'il existe des variantes en terme de configuration php.ini, debogueur, etc.)
  • sélectionner un exécutable php
On n'oubliera pas ensuite (puisque c'est ce qui nous intéresse tout particulièrement) du cliquer sur le bouton "Next" pour y associer un débogueur (ici. Xdebug préalablement installé).
Sélection du débogueur d'un exécutable PHP dans eclipse
Si besoin est, vous pourrez modifier quelques paramètres du débogueur pour les mettre en conformité avec ce qui a été déclaré pour Xdebug dans le fichier php.ini utilisé pour ce script
Configuration Xdebug d'un exécutable PHP dans eclipse
Et on termine bien sûr avec Finish
Pour lancer le débogage pas à pas avec l'environnement par défaut, il suffit de sélectionner le script dans un projet Eclipse et choisir Debug As puis "PHP CLI Application". Eclipse basculera alors dans la vue (perspective) de débogage afin de proposer un environnement de travail plus adéquate au débogage pas à pas.

10.7.2.3.Pour déboguer un serveur web PHP

Dans le cas d'une application web PHP, il faut au préalable configurer au moins un environnement de serveur PHP dans Eclipse. Pour cela, vous pouvez vous rendre dans le menu Window/Preferences/PHP/Servers
Liste des serveurs PHP dans eclipse
et cliquer sur le bouton "New".
Ajout d'un serveur PHP dans eclipse
Vous devrez alors saisir
  • Un identifiant pour la configuration serveur
  • L'url que vous saisissez habituellement pour accéder à votre application web
  • Le chemin vers le "document root" (généralement public/ ou www/) de l'application web (ce dossier n'est pas nécessairement celui qui apparaît dans votre projet Eclipse)
Comme dans le cas d'un script lancé en ligne de commande, vous devrez sélectionner un débogueur (ici Xdebug) et éventuellement ajuster sa configuration.
Pour lancer le débogage pas à pas, il suffit de sélectionner le script point d'entrée de l'application (typiquement index.php) dans un projet Eclipse et choisir Debug As puis "PHP Web Application". Eclipse vous demandera alors probablement de préciser l'URL à appeler. N'hésitez pas à vérifier l'URL proposée car par défaut il s'agira de la concaténation de l'URL de base avec le chemin du fichier index et c'est rarement ce que l'on a comme URL d'entrée de l'application. Eclipse basculera alors dans la vue (perspective) de débogage afin de proposer un environnement de travail plus adéquate au débogage pas à pas.
Même si la vue propose un onglet (au milieu des onglets des fichiers ouverts) contenant un navigateur web, il peut être préférable de tester l'application dans un navigateur plus classique tel que Chrome, Firefox ou autre. Pour cela, ouvrez votre navigateur préféré et ajoutez à l'URL d'entrée de votre application le paramètre GET suivant XDEBUG_SESSION_START=ECLIPSE_DBGP (en ajoutant peut-être également la clé KEY). Ou dit/fait autrement on pourra simplement recopier, dans le navigateur favori, l'URL affichée dans le navigateur Eclipse.

10.7.3.Utilisation

Voici à quoi ressemble la perspective "PHP Debug"
Prespective PHP Debug
On y retrouve:
  • En haut à gauche: Le ou les processus (ou threads) en cours
  • En haut à droite: Les variables utilisées dans le script et un onglet pour accéder à la liste des points d'arrêt
  • Au milieu: Le script
  • En bas: La console permettant de visualiser le résultat du script