Table des matières

, ,

Eclipse et PHP-XDebug

Cette documentation est basée sur une installation d'Eclipse PDT (Simplement téléchargée, décompressée et utilisée telle quelle). Cependant je ne vois pas pourquoi cela ne s'appliquerait pas à d'autres.

Vous avez installé Eclipse pour faire de développement PHP, mais qu'en est-il du débug ?
Bien entendu, passer par les fonction var_dump(), echo print etc. est une solution, mais il est toujours plus interessant d'avoir plus d'informations et de pouvoir utiliser des points d'arrêts/pause dans l'exécution du script pour surveiller ses variables et voir si le résultat est celui attendu avant la fin du script.

Xdebug est une extension PHP très pratique, écrite par l'un des développeurs de PHP, Derick Rethans.

Bien entendu la version Xdebug peut aussi s'installer en téléchargeant les binaires du site, en compilant les sources ou via PECL. Pour les anglophones qui préfèrent installer la dernière version, je vous invite à consulter les liens en bas de page ;-)

Pré-requis

Installation

Il vous suffit, pour cela, d'installer les paquets php-xdebug php7.3.

Note : le numéro de version PHP est a adapter

Configuration

Tout d'abord, éditez le fichier /etc/php/7.3/apache2/conf.d/20-xdebug.ini vous devez y trouver la ligne suivante :

  zend_extension=xdebug.so

Comme indiqué dans le documentation officiel de Xdebug que vous trouverez ici https://xdebug.org/docs/remote, vous devez activer Xdebug en ajoutant les lignes suivantes :

  xdebug.remote_enable=On
  xdebug.remote_host="localhost"
  xdebug.remote_port=9000
zend_extension=xdebug.so
xdebug.mode = debug
xdebug.discover_client_host = 1
xdebug.start_with_request = yes

Relancez le serveur apache

sudo systemctl restart apache2

Pour vérifiez l'installation, créez une page test.php contenant ces lignes :

  <?php
  phpinfo();
  ?>

puis ouvrez cette page (ex. : http://127.0.0.1/test.php), vous devriez obtenir ceci :

PHP Version 7.3.23-2+ubuntu20.04.1+deb.sury.org+1
This program makes use of the Zend Scripting Language Engine:
Zend Engine v3.3.23, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.23-2+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.9.8, Copyright (c) 2002-2020, by Derick Rethans

et un peu plus bas (extrait) :

xdebug support	enabled
Version 	2.9.8

et

xdebug.remote_enable	On	On
xdebug.remote_host	localhost	localhost
xdebug.remote_log	no value	no value

Configurer Eclipse

Par défaut il manque le plugin PHP : PDT Aller dans le menu Help/Install new software… Collez dans "work with" l'URL suivante : https://download.eclipse.org/tools/pdt/updates/latest/ puis on clique sur Add… Cliquez sur OK sur la fenêtre popup "Add Repository" sans indiquer de Name. Cochez le module de PDT. Cliquez sur Finish en bas de la fenêtre. Le téléchargement et l'installation se déroule pendant quelques minutes. Relancez Eclipse pour prendre en compte la modification. ;-)

XDebug

Lancez Eclipse, puis dans le menu "Window → Preferences".

Sélectionnez PHP → Debug, vous obtenez ceci par défaut.

Cliquez sur le lien "PHP Executables", dans la nouvelle fenêtre cliquez sur le bouton "Add", et renseignez comme ceci :

Pour valider le chemin vers l'exécutable php (ou tout autre exécutable), utilisez la commande suivante dans un terminal "which php".

et validez.

Revenez sur la section Debug pour compléter les informations comme ci-dessous :

Rq : Attention, pour XDebug >=3, le port d'ecoute par defaut a préciser est 9003 (et non 9000 avant).

Firefox

Je pense que ce paramétrage n'est pas requis si Firefox est le navigateur par défaut, mais on va tout de même s'y intéresser car cela peut aussi être valable pour utiliser d'autres navigateurs pour le debug.

Allez dans le menu "Window → Preferences", déployez la section "General" et sélectionnez "Web Browser", vous arrivez ici :

Cliquez sur le bouton "New" et ajoutez les informations suivantes :

Validez et paramétrez ensuite comme ci-dessous :

Utilisation

Allez dans le menu "Run", et vous obtiendrez des sous-menus spécifiques comme ci-dessous

Si tel n'est pas le cas, il faut revoir les paramètres de votre projet, mais à l'heure actuelle, je ne m'en souviens plus trop :-? ayant fait cette manipulation il y a pas mal de temps… donc si une autre personne avant moi veut bien compléter : FIXME ;-)

Voir aussi


Contributeur : chtiland, quent57

Basé sur (en) Debugging PHP Applications with Xdebug and Eclipse PDT par Hodge