Je souhaite qu'une équipe utilisant différents ordinateurs puisse déboguer PHP sur un serveur distant, mais j'ai du mal à faire fonctionner Xdebug dans NetBeans 7.0.1. J'ai essayé de nombreux conseils en ligne, mais en vain.
Pour mémoire, j'ai installé Xdebug localement sur un ordinateur Windows 7 exécutant WampServer. Donc, je peut déboguer PHP avec des points d'arrêt dans NetBeans, à condition de définir la propriété Propriétés du projet-> Exécuter la configuration-> Exécuter en tant que sur site Web local}. _. Cependant, comme indiqué ci-dessus, mon objectif est de déboguer NetBeans sur un site Web distant.
Mon serveur est une machine Ubuntu 11.04. J'ai utilisé la sortie de http://www.xdebug.org/find-binary.php pour mettre le bon binaire sur la machine. J'ai modifié tous les fichiers php.ini
que j'ai trouvés (dans les répertoires php5/Apache2
et php5/cli
) afin d'inclure ces lignes:
zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_Host=localhost
xdebug.remote_port=9000
Si je consulte la page Web phpinfo.php
, elle dit:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans
Donc, Xdebug semble être installé correctement. Néanmoins, lorsque j'essaie de déboguer dans NetBeans, le message de la barre d'état sans fin En attente de connexion (netbeans-xdebug)) apparaît. Lorsque j'appuie sur le bouton d'arrêt, j'obtiens Aucune connexion de xdebug n'a été détectée dans les X secondes. La raison peut être que xdebug n'est pas installé ou n'est pas correctement configuré.
Peut-être que je confonds les paramètres locaux avec les paramètres du serveur ici? Un message said xdebug.remote_Host
doit être défini sur IP de la machine exécutant NetBeans, mais je souhaite qu'une équipe puisse déboguer en utilisant des machines avec des adresses IP différentes. Un problème pourrait être le port 9000, mais j'ai vérifié qu'il n'était pas bloqué.
Toute aide qui pourrait clarifier ceci serait appréciée!
Le serveur exécutant PHP (et XDebug) doit pouvoir se connecter à votre poste de travail/bureau.
Le serveur doit donc être configuré en conséquence en lui indiquant de se connecter à une adresse IP spécifique à / (xdebug.remote_Host
) ou de se reconnecter automatiquement (xdebug.remote_connect_back
). Ce dernier a cependant des implications en termes de sécurité. Celles-ci sont décrites dans le manuel .
La directive clé est la suivante:
xdebug.remote_connect_back = On
Cela permet au serveur Web de se connecter à n'importe quel ordinateur qui demande une session de débogage. De cette façon, vous n'avez pas à coder en dur une adresse IP et pouvez partager Xdebug. Cette directive n'était pas présente dans les versions précédentes et est souvent omise des tutoriels et de la documentation.
Vous devez également vérifier que chaque ordinateur client accepte les connexions entrantes sur le port 9000 (xdebug.remote_port
). Cela inclut la configuration du pare-feu et l’assurance que le client du débogueur est opérationnel.
Pour moi, xdebug.remote_connect_back = On
ne fonctionne pas . Ce que j'ai fait était de définir le transfert de port ssh sur ma machine cliente.
xdebug config sur la machine distante:
xdebug.remote_enable=1
xdebug.remote_Host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
ports de transfert sur la machine cliente:
ssh -g -N -lusername -R9000:127.0.0.1:9000 [remote.Host.ip]
L'accès au shell sur la machine distante doit être autorisé.
Dans mon cas, ces commandes m'ont aidé:
xdebug.remote_enable = On
xdebug.remote_autostart=1
Remarque: le débogueur fonctionnera même si la variable GET/POST/COOKIE n'est pas présente en raison de 'xdebug.remote_autostart = 1'
Merci pour xdebug.remote_connect_back = On
du côté serveur php.ini
Je devais aussi utiliser ce plugin pour Chrome pour pouvoir démarrer la session de débogage dans PhpStorm
Vous aurez besoin de set:
xdebug.remote_Host=192.168.1.104
192.168.1.104
est l'adresse IP du client, où vous travaillez avec l'EDI
J'ai eu le même problème plusieurs fois en essayant de configurer le menu fixe et après m'être gratifié la tête plusieurs fois, j'ai réalisé que c'était le moyen de le résoudre. J'ai donc décidé de mettre cela ici comme une réponse pour mon futur moi.
La plupart du temps, le fichier Dockerfile ajoutait cette déclaration à php.ini:
xdebug.remote_connect_back = on
Cela donnerait l'impression que tout allait bien, mais aucune connexion de débogage n'a été prise par PHP tempête. Remplacer la ligne ci-dessus par ce qui suit corrige instantanément tout ce qui me concerne.
xdebug.remote_connect_back = 0
xdebug.remote_Host = Host.docker.internal
Bien sûr, après cela, vous devez toujours exécuter: $ docker-compose down
$ docker-compose build
et $ docker-compose up -d
Quelle extension de page lancez-vous pour démarrer le débogage? Je me souviens d’être devenu fou et de passer des nuits blanches où tous les réglages avec XDebug se déroulent bien. Le problème était que je ne démarrais pas avec .PHP
mais plutôt avec .HTML
.
Si vous essayez alors de démarrer votre débogage avec le fichier .PHP
.