J'ai eu pendant longtemps des problèmes pour faire fonctionner XDEBUG avec ECLIPSE en remote debugging. Celà se manifestait par exemple avec ECLIPSE qui reste sur "Launching website.com 48% ou 57%" et aucun break ne fonctionnait.

Installation xdebug sur le serveur distant:

apt-get install php-xdebug

Modifier la config /etc/php/cgi/conf.d/20-xdebug.ini (emplacement visible dans phpinfo) :


# cat /etc/php5/cgi/conf.d/20-xdebug.ini
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9003
 

Changements xdebug v3.0

Les paramètres deviennent, pour une install apache2 / php7.3-fpm, par exemple
# cat /etc/php/7.3/fpm/conf.d/20-xdebug.ini
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request
xdebug.client_port = 9003
xdebug.client_host = ip.ma.chine.locale

Paramétrage Eclipse sur la machine locale:

Dans le menu Eclipse windows > préférences > PHP > Debug > Installed debugger > Xdebug

Donner le port 9003 qu'on a défini sur le serveur distant.

 

Si à ce stade votre conexion marche de manière instable ou pas du tout

  • Vérifier vos parefeus côté client et serveur ne bloquent pas le port 9003
  • Vérifier le port mapping de votre routeur

si vous vous connectez à INTERNET via un routeur type FREEBOX ou XBOX vérifiez que les connexions sur le port 9003 sont bien transmises vers votre poste client
En effet, pour XDEBUG, il faut généralement ouvrir le port 9003 sur ce routeur et le faire suivre sur votre PC où tourne l'IDE. Sur un routeur VODAFONE, par exemple, cela peut ressembler à ceci:
port mapping vodafone

 

  • Utiilisez des adresses IP statiques

Mais si votre routeur est programmé pour attribuer des IP dynamiques par DHCP, il se peut qu'un jour votre téléphone mobile se voit attribuer l'IP 192.168.155 qu'avait votre PC lorsque vous avez configuré XDEBUG.
La solution est de forcer une ip statique lors la connexion de votre PC à votre routeur.
Sous Debian 9, avec NETWORK MANAGER cela peut se réaliser ainsi:

click droit sur l’icone wifi du tableau de bord

Configurer les connexions réseau > Définir une IP FIXE dans l’onglet IPV4

  • Faire passer votre connexion sur le port Xdebug via un tunnel SSH

Un autre renforcement de la connexion est d'établir une connexion SSH sur le port XDEBUG avant de lancer Xdebug Eclipse:

ssh -R 9003:localhost:9003 userThis email address is being protected from spambots. You need JavaScript enabled to view it.

Vérifier qu'eclipse écoute sur le port de XDEBUG

$ sudo netstat -tnlp|grep 9003
tcp6       0      0 :::9003                 :::*                    LISTEN      71098/java

Vérifier le traffic sur le port xdebug

Vous pouvez utiliser iptables pour vérifier que vous recevez bien quelquechose sur le port (9003 ici) où vous avez paramétré xdebug en déclenchant des logs dans syslog:

$ sudo iptables -I INPUT -p tcp --dport 9003 --syn -j LOG --log-prefix "HTTPS SYN: "

puis surveiller syslog pendant que vous lancez la page à débugger:

sudo tail -f /var/log/syslog

Mar 3 12:45:10 kmcs kernel: [14804.033727] HTTPS SYN: IN=enp3s0 OUT= MAC=b0:25:aa:35:14:85:60:12:3c:cc:82:09:08:00 SRC=s.s.s.s DST=d.d.d.d LEN=60 TOS=0x00 PREC=0x00 TTL=55 ID=38315 DF PROTO=TCP SPT=54306 DPT=9003 WINDOW=29200 RES=0x00 SYN URGP=0

Supprimer un utilisateur du port: fuser -k 9003/tcp

Conflit avec les alias

Si vous avez un alias défini sur votre domaine qui accède à un autre document root, xdebug ou Eclipse (?) ajoute automatiquement des path mapping à sa définition lorsque vous accédez à cet alias et ça ne break plus.

Exemple avec un Alias /phpmyadmin /usr/share/phpmyadmin. Xdebug ne break plus dès que vous accédez à votre-domaine.com/phpmyadmin. Faut passer par le-nom-du-server/phpmyadmin.


 Autre methode avec plugin firefox

D'après https://jonathansblog.co.uk/remote-debugging-php-in-eclipse-with-xdebug

Télécharger le plugin FF https://addons.mozilla.org/en-US/firefox/addon/xdebug-helper-for-firefox/

Dans Eclipse > paramètres > php > debug > debugger > choisir xdebug > configure > chosir "Accept remote session" = any (peu importe le port)

Dans FF cliquer sur licone Xdebug dans la barre d'adresse > Debug ou Disable pour arrêter

Rafraichir la page.