web-dev-qa-db-fra.com

netbeans affiche "En attente de connexion (netbeans-xdebug)"

besoin d'aide pour configurer xdebug, pour le débogage de projets à partir de IDE netbeans.

Voici les caractéristiques de mes composants:

XAMPP 1.8.2 

PHP: 5.4.16

haricots nets: 7.3.1

Apache: 2.4.4 (Win32) 

voici la dernière partie de mon fichier php.ini:

 [XDebug]
 zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9-nts.dll"
 ;xdebug.profiler_append = 0
 ;xdebug.profiler_enable = 1
 ;xdebug.profiler_enable_trigger = 0
 xdebug.profiler_output_dir = "C:\xampp\tmp"
 ;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
 xdebug.remote_enable = 1
 xdebug.remote_handler = "dbgp"
 xdebug.remote_Host = "127.0.0.1"
 ;xdebug.trace_output_dir = "C:\xampp\tmp"

quand j'exécute phpinfo (), aucun xdebug n'est installé, et lorsque je débogue un projet de netbeans, le message "En attente de connexion (netbeans-xdebug)".

quelqu'un peut m'aider à le configurer? serait très apprécié.

merci d'avance.

65
pasluc74669

Avez-vous rectifié le problème? Si ce n'est pas le cas, essayez ceci. 

1.) php.ini contenu du fichier

[xDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9.dll"
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
;xdebug.remote_Host="localhost:81"
xdebug.remote_Host=192.168.1.5
;xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_mode=req
xdebug.idekey="netbeans-xdebug"

xdebug.remote_Host=192.168.1.5 - Il s'agit de l'adresse IPv4 de mon système. J'ai changé pour ceci car je ne pouvais pas déboguer avec localhost et 127.0.0.1.

dans l'EDI NetBeans, ouvrez Tools-> Options -> PHP -> Debugging. Les valeurs de port du débogueur et de l'identifiant de session doivent correspondre au port et à la clé ide spécifiés dans php.ini.

Maintenant, sauvegardez php.ini, redémarrez Apache et essayez de déboguer.

Merci Johnson

111
Johnson T A

Lorsque Netbeans démarre une session de débogage, il lance deux écouteurs, l'un sur 0.0.0.0:9000 (toutes les adresses IPv4 du système) et l'autre sur l'interface IPv6.

Si Netbeans et le serveur Web se trouvent sur le même système, idéalement, XDebug serait configuré pour renvoyer les données à 127.0.0.1:9000, sur lequel NetBeans écouterait (et uniquement par session) ...

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_Host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.remote_connect_back=0

Si, pour une raison quelconque, XDebug ne peut pas renvoyer à 127.0.0.1, ou si Netbeans n'écoute pas sur 127.0.0.1, vous pouvez configurer XDebug pour renvoyer les données au $_SERVER['REMOTE_ADDR'] de la demande d'origine ...

xdebug.remote_connect_back=1

De cette façon, vous n’avez pas à spécifier l’adresse IP exacte (c’est-à-dire que, comme indiqué ci-dessus, répondez à l'adresse IP du réseau local: 192.168.1.5). L'inconvénient est que n'importe quelle source peut se connecter.

Si vous avez d'autres problèmes, cela ...

xdebug.remote_autostart=1

... lancera également le processus de débogage pour les demandes toutes, et pas uniquement pour celles avec la requête ou le cookie de démarrage de session approprié. L'inconvénient est que toutes les demandes initieront la collecte de données de débogage et la génération de rapports (ralentir le processus et générer plus de données).

D'après ce que j'ai pu comprendre, la majorité de ces problèmes "En attente de connexion (netbeans-xdebug)" sous Windows (avec XAMPP, Wamp-Server, etc.) résultent généralement du pare-feu Windows et de McAfee (ou de tout autre logiciel anti-virus) bloquant la connexion ...

Source: Netbeans - Problème "En attente de connexion (netbeans-xdebug)"

10
rightstuff

Je suis un programmeur .Net et je connais très peu PHP . Récemment, j’essayais d’héberger une application open source PHP sur ma machine (Windows). Après la lutte pendant 5-6 jours, je vais énumérer les étapes qui ont fonctionné pour moi.

J'ai désinstallé toutes les installations précédentes de XAMPP et NetBeans et j'ai procédé à de nouvelles installations.

Ce n'est peut-être pas la solution pour tout le monde mais cela a fonctionné pour moi et j'espère que cela aidera quelqu'un.

  1. installer XAMPP 

  2. installez netbeans pour PHP.

  3. Ouvrez IIS et arrêtez-le. Il fonctionne sur le port 80 par défaut (j'utilise XAMPP sur le port 80, c’est-à-dire par défaut, l’exécution sur un autre port peut nécessiter des paramètres de configuration supplémentaires).

  4. Ouvrez le panneau de configuration de XAMPP et démarrez Apache. Si le port 80 est libre, aucun problème ne devrait survenir.

  5. Ouvrir localhost dans le navigateur devrait afficher la page d’accueil XAMPP.

  6. ouvrez le lien phpinfo() dans le volet gauche et copiez tout le contenu de la page . Allez à: http://xdebug.org/wizard.php et collez tout le contenu dans la zone de texte, puis cliquez sur Analyser ma sortie phpinfo. Il vous affichera le fichier Xdebug adapté à votre configuration.

  7. Téléchargez la dll Xdebug donnée et copiez-la dans C:\xampp\php\ext (Xampp étant le répertoire d'installation par défaut de Xampp)

  8. Allez au panneau de contrôle XAMPP, cliquez sur le bouton Config devant Apache et sélectionnez php.in,

  9. Trouver une ligne similaire ou similaire,

; zend_extension = "C:\xampp\php\ext\php_xdebug.dll"

(Le point-virgule signifie qu'il est commenté)

Supprimez le point-virgule et remplacez le chemin par le chemin de la DLL que vous venez de copier, comme suit:

zend_extension = "C:\xampp\php\ext\php_xdebug-2.3.2-5.4-vc9.dll"
  1. De même trouver des lignes

    ; xdebug.remote_enable = 0 ; xdebug.remote_handler = "dbgp"

supprime les points-virgules devant les deux lignes et crée remote_enable = 1 

xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
  1. Redémarrez le serveur Apache.

  2. Copiez le code de votre site Web sous C:/XAMPP/htdocs/(your_website)/ Cela signifie que votre index.php devrait correspondre à C:/XAMPP/htdocs/(your_website)/index.php.

  3. Ouvrez Netbeans, sélectionnez Nouveau projet -> PHP -> PHP projet à partir d'une source existante et sélectionnez le dossier que vous venez de copier dans le dossier htdocs . Configurez-le pour s'exécuter sur le serveur Web local.

  4. Définissez un point d'arrêt sur la première ligne de index.php et le débogage.

C'est tout.

Des réglages supplémentaires ont été suggérés sur différents messages, mais les étapes mentionnées ci-dessus ont parfaitement fonctionné pour moi.

5
Jitendra Sawant

Je veux mentionner quelque chose ici à propos de xdebug.remote_Host

xdebug.remote_Host="127.0.0.1"

N'est pas valide. Cela peut fonctionner dans certains cas, mais les guillemets peuvent également causer des problèmes. La plupart des gens n’ont pas de problèmes lorsqu’on utilise des adresses IP entre guillemets, mais cela crée un mauvais précédent. Cela donne à penser que si vous souhaitez utiliser un nom d'hôte ou une URL, vous devez le mettre entre guillemets. Ceci est incorrect, les URL entre guillemets ne fonctionneront pas.

Si vous voulez déboguer en utilisant une URL, vous pouvez le faire en mettant l'URL après les égaux, comme ceci:

xdebug.remote_Host=subdomain.mydomain.com

Je tiens également à mentionner que si vous avez un numéro de port, ne l'ajoutez pas. Cela ne marche pas:

xdebug.remote_Host=subdomain.mydomain.com:9000

Voici ce que vous voulez faire:

xdebug.remote_Host=subdomain.mydomain.com
xdebug.remote_port=9000

Si vous le faites, je vous mets également en garde que remote_connect_back est désactivé. Comme ça:

xdebug.remote_connect_back=0

ou vous pouvez l'omettre entièrement, comme ceci:

;xdebug.remote_connect_back=1

Si remote_connect_back est activé, il essaiera d'extraire votre adresse IP de la connexion entrante et d'ignorer le paramètre remote_Host et port.

Xdebug utilise tout simplement TCP pour établir des connexions. Ce n'est pas HTTP. Cela signifie que des outils tels que Fiddler ne montreront aucun paquet ni aucune information sur le débogage. Si vous avez besoin de déboguer et de voir si le serveur appelle votre IDE, vous pouvez procéder de plusieurs manières.

Wireshark vous permettra de voir le trafic TCP. De plus, si vous êtes sous Windows, Microsoft Message Analyzer peut également surveiller le protocole TCP.

Toutefois, si tout ce que vous essayez de faire est de supprimer votre IDE est une cause possible de problèmes de débogage distant, je vous suggère plutôt de démarrer un serveur TCP local.

Il s'agit d'un excellent programme Java gratuit pour démarrer un serveur TCP: http://sockettest.sourceforge.net/

 How to start a TCP Server

Dans la section Adresse IP, indiquez simplement 127.0.0.1 ou laissez-le à 0.0.0.0. Indiquez ensuite le numéro de port, qui est généralement défini par défaut sur 9000 pour xdebug.

Une fois que le serveur TCP est en cours d'exécution, ouvrez votre page Web distante avec un xdebug_break (); appel de fonction en elle. Ceci indiquera à xdebug sur le serveur distant de commencer le débogage sur le serveur et le port que vous avez énumérés dans votre php.ini.

Regardez le serveur de socket et voyez si vous obtenez une connexion. Les premières données envoyées devraient ressembler à ceci:

<init appid="APPID"
      idekey="IDE_KEY"
      session="DBGP_COOKIE"
      thread="THREAD_ID"
      parent="PARENT_APPID"
      language="LANGUAGE_NAME"
      protocol_version="1.0"
      fileuri="file://path/to/file">

Si vous en êtes arrivé là, le débogage à distance fonctionne! Arrêtez simplement le serveur et configurez votre IDE pour écouter sur ce port!


Si vous êtes comme la plupart d'entre nous, votre machine de développement est derrière un routeur avec NAT. Cela signifie que tout le monde dans votre bureau a la même adresse IP publique. Ceci est un problème car lorsque xdebug contacte cette adresse IP pour démarrer le débogage, il frappe le routeur et non votre ordinateur. Le routeur peut être configuré pour transmettre certains numéros de port à des ordinateurs individuels, mais vous ne voudrez peut-être pas le faire car ce port sera ouvert jusqu'à ce que vous changiez les paramètres de votre routeur.

Une autre option consiste à utiliser SSH. Voici un bon exemple de la façon de procéder: http://stuporglue.org/setting-up-xdebug-with-netbeans-on-windows-with-a-rrote-Apache-server/#attachment_1305

Mon option préférée est d’utiliser Ngrok . Ngrok est un excellent outil pour rediriger le trafic http, https et TCP. Pour utiliser la fonction de redirection TCP, vous devez créer un compte gratuit.

Une fois que vous avez ouvert un compte et ajouté votre clé API à votre ordinateur, exécutez cette commande sur l'ordinateur sur lequel se trouve votre IDE:

ngrok tcp 9000

Cela ouvrira un tunnel tcp (pas http) du serveur ngrok à la machine sur laquelle vous avez exécuté la commande. J'utilise le port 9000, vous pouvez modifier ce port si votre IDE est configuré pour un autre port Xdebug.

Voici ce que vous devriez voir:

 Ngrok tcp tunnel open

Vous aurez besoin de voir quelle est l'URL du tunnel TCP qui a été ouvert. Dans cet exemple c'est:

0.tcp.ngrok.io:14904

Pour cette session, le paramètre Xdebug sur votre serveur devrait être le suivant:

xdebug.remote_Host=0.tcp.ngrok.io
xdebug.remote_port=14904

L'URL et le port changeront à chaque lancement de ngrok. Si vous voulez avoir les mêmes URL et port, vous devez passer à un compte payant. Assurez-vous de redémarrer Apache après avoir modifié votre fichier php.ini.

4
Beachhouse

Je viens de passer des heures à lire tant de réponses sur cette page et d'autres, et personne n'a mentionné ce qui finissait par être la solution pour moi:

Assurez-vous que vos paramètres de port choisis correspondent dans les 3 emplacements

Mon problème était qu'il y a TROIS endroits que le port choisi doit correspondre. Deux des miens ont dit 9001 et un, 9000. Je les ai tous modifiés en 9000.

C'était le problème et pourquoi Netbeans dirait seulement «En attente de connexion (netbeans-xdebug)».

Les 3 emplacements de paramétrage du port sont: 

  • php.ini (xdebug.remote_port=9000)
  • propriétés du projet> Exécuter la configuration> Avancé
  • Netbeans> Outils> Options> PHP> Débogage
3
Ryan

Vérifiez également les paramètres du pare-feu "Windows".

Pour moi, cela n'a pas fonctionné car mon réseau LAN a été déclaré "réseau public" . Après l'avoir basculé sur "Réseau professionnel", il a bien fonctionné.

2
Tim Stollberg

Ajouter ceci a fonctionné pour moi: 

xdebug.idekey=netbeans-xdebug   
1
John Sarris

Dans mon cas, le journal Apache affichait un avertissement PHP indiquant de ne pas définir date.timezone. Xdebug/netbeans a commencé à fonctionner dès que je l'ai configuré dans php.ini et que j'ai redémarré Apache.

date.timezone = America/Los_Angeles

Ceci est PHP 5.5.

1
user2701551

Je mon cas si j'ajoute suivant en php ini ça ne marche pas

zend_extension_ts = "C:\PHP\PHP560\ext\php_xdebug-2.4.0rc4-5.6-vc11.dll"

Mais si j'ajoute 

zend_extension = "C:\PHP\PHP560\ext\php_xdebug-2.4.0rc4-5.6-vc11.dll"

Cela fonctionne bien.

1
nikunj gandhi

Après avoir correctement configuré le fichier php.ini, les netbeans et la redirection de ports sur le routeur, je continuais à obtenir le malheureux "en attente de connexion (netbeans-xdebug). J'ai finalement remarqué sur la page netbeans" N'oubliez pas de définir output_buffering = Off dans votre fichier php.ini ".

J'ai donc vérifié le fichier /etc/php/7.x/Apache2/php.ini et sa valeur était 4096. J'ai donc réinitialisé output_buffering = Off et voilà!

J'espère que cela aidera quelqu'un, car le message implique qu'il s'agit d'une erreur de connexion plutôt que d'une erreur de configuration.

1
shires-boy

Je suis sous Windows avec xampp et j'ai modifié la section [XDebug] de mon php.ini (en bas) pour que cela fonctionne:

zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_Host=localhost
xdebug.remote_port=9000

Extrait du wiki Netbeans ici: http://wiki.netbeans.org/HowToConfigureXDebug

Si vous avez Apache en cours d'exécution, pensez à le redémarrer après avoir configuré XDebug et enregistré le fichier php.ini.

1
Richard Lovell

J'ai eu ce problème pour un projet, mais pas pour les autres. Donc, xdebug était correctement configuré, les paramètres du projet étaient corrects, mais cela ne fonctionnait toujours pas.

Je viens donc de supprimer le sous-répertoire nbproject, contenant les paramètres du projet, et de créer un nouveau projet avec la source existante. Cela a résolu le problème pour moi.

0
johanv

J'ai eu le même problème et j'ai essayé de le résoudre pendant des heures. J'ai finalement découvert que l'extension chrome ipflood, qui modifie les en-têtes pour donner l'impression que vous utilisez un proxy, en était la cause. 

Cela fonctionne parfaitement bien après l'avoir désactivé!

0
Black

Après avoir modifié vos fichiers php.ini ou xdebug.ini, quel que soit le mode d’exécution de votre serveur Web, veillez à le redémarrer (par exemple: service httpd restart sur CentOS), sinon Apache ne prenez pas en compte les modifications que vous avez apportées à ce fichier .ini.

Le paquet xdebug sur CentOS est "phpXXu-pecl-xdebug".

Les valeurs par défaut de la plupart des Xdebugs récents sont généralement acceptables. Il est strictement nécessaire d'obtenir ces deux valeurs, quelque part dans un fichier Apache .ini:

xdebug.remote_enable=on
xdebug.remote_Host=[DNS entry that resolves to the IP4 of your debugger]
0
johnwbyrd

J'ai passé beaucoup de temps à essayer d'obtenir la configuration optimale, ce qui mérite sa propre réponse, même si celle de @Johnson T A est presque correcte.

Il dit 

xdebug.remote_Host = 192.168.1.5 - C'est l'adresse IPv4 de mon système, j'ai changé pour cela car je ne pouvais pas déboguer avec localhost et 127.0.0.1.

Eh bien, tout le monde ne peut pas utiliser une adresse privée, dynamique ou autre. De plus, dans mon cas, je souffrais de très longs temps d’attente avant que le débogage ne commence réellement - environ 30 secondes à chaque fois. Ce n'était pas pratique.

Je suis sûr que tout le monde qui a ces problèmes est au moins sur sous Windows 7. Le problème est lié à un mélange entre résolution de nom et xdebug. Pour les surmonter, assurez-vous que:

  • Le port 9000 n'est pas utilisé. Si c'est le cas, remplacez-le par un fichier inutilisé, à la fois dans php.ini et dans Netbeans.
  • Assurez-vous que xdebug.remote_enable est on.
  • Si vous voulez pouvoir déboguer en utilisant les adresses localhost et 127.0.0.1, ouvrez \Windows\System32\drivers\etc et assurez-vous que vous avez les lignes suivantes:

    127.0.0.1 localhost

    :: 1 localhost

Assurez-vous que la première ligne n'a pas de # avant et que la seconde l'a.

Ma section php.ini de travail (je n'ai pas besoin de profiler alors je l'ai désactivée):

[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.remote_enable = on
xdebug.remote_handler = "dbgp"
xdebug.remote_Host = "localhost"
xdebug.remote_port = 9001
xdebug.trace_output_dir = "C:\xampp\tmp"
xdebug.remote_log = "C:\xampp\tmp\xdebug\xdebug.log"
xdebug.idekey = "netbeans-xdebug"
xdebug.remote_autostart = on
xdebug.remote_connect_back = on

Arrêtez le débogueur netbeans. Redémarrez Apache.

Je parie que vous ne souffrirez plus de longs temps d'attente ni d'un comportement étrange avec le débogueur.

Explication: .__ Bien que dans etc/hosts, ils disent "la résolution du nom de l'hôte local est gérée dans le DNS même", pour une raison quelconque, cela ne fonctionne pas bien avec xdebug si vous ne le spécifiez pas explicitement. Le mettre explicitement ne semble pas nuire à l’ensemble et résout ce problème avec xdebug. Mais vous devez aussi explicitement désactiver la notation abrégée sIPv6 pour localhost (:: 1) pour que tout cela fonctionne. Je ne connais pas les raisons internes mais triplons toutes les combinaisons et celle-ci fonctionne pour moi comme un charme.

0
Pere

Sélectionnez un navigateur spécifique pour le débogage:

  1. Clic droit sur le projet -> sélectionnez Propriétés
  2. Sélectionner des catégories: le navigateur a ensuite sélectionné un navigateur spécifique pour le débogage
0
Vinh

J'ai eu le même problème . Pourquoi? D'abord, j'ai installé WAMP, je remercie Netbeans et ils travaillent ensemble comme un charme .. netbeans-xdebug) . Parallèlement, NetBeans fonctionnait bien avec Wamp.

Ma solution était de retourner à Wamp. C'est mieux que rien.

Mon PC: Win-7-32, NetBeans-8.0.2, 

wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b

xampp-win32-5.6.8-0-VC11

0

Si votre xdebug ne fonctionne pas correctement, consultez le journal de votre serveur:

$ Sudo less /var/log/httpd/error_log

Pour vérifier les connexions, utilisez cette commande:

$ Sudo netstat -an

Après avoir démarré le débogage sur netbeans, si vous utilisez la commande netstat, vous pouvez voir le port de xdebug (probablement 80):

tcp6       0      0 192.168.33.10:80       192.168.33.2:49901      ESTABLISHED

Le port de netbeans est 9000:

tcp        0      0 192.168.33.10:52024    192.168.33.2:9000       ESTABLISHED

Vous pouvez modifier le port du xdebug à partir d’ici (dans le menu principal, Outils -> Options -> PHP):  enter image description here

Si la connexion n'est pas établie, il est fort possible que votre connexion soit bloquée par votre programme antivirus ou votre pare-feu. Vous pouvez le vérifier dans votre programme anti-virus ou votre pare-feu et supprimer le blocage car il s'agit d'une connexion sécurisée.

0
lechat

Une tentative pourrait être de démarrer php -i dans la fenêtre de commande. Lors de la redirection de la sortie, une erreur était 

Pour moi, c’était la solution FINALE car j’avais téléchargé une mauvaise version de Xdebug

Pour moi, cela aurait dû être: php_xdebug-2.1.2-5.3-vc6.dll

Mais j'avais: php_xdebug-2.2.4-5.3-vc9.dll. Donc, une erreur est survenue de php -i

E:\Programme\php>php -i > myOutputFromPhp

rendements suivant ERROR

Impossible de charger Xdebug - il a été construit avec la configuration API220090626, TS, VC9, alors que le moteur en cours d'exécution est.

0
AlfredK

vérifier ceci: Lancer XDebug dans Netbeans sur une requête externe


une autre façon consiste à ouvrir une nouvelle fenêtre:

essayez d'aller sur Projet> Exécuter la configuration> Avancer 

et passer à la valeur par défaut, vérifiez s’il ouvre une autre fenêtre dans le navigateur

0
Julio Marins

Pour les utilisateurs Ubuntu:

  1. Sudo su
  2. apt-get install php5-dev php-pear
  3. pecl installe xdebug
  4. find/-name 'xdebug.so' 2>/dev/null
  5. il retournera quelque chose comme: /usr/lib/php5/20121212/xdebug.so
  6. vi /etc/php5/Apache2/php.ini
  7. ajoutez cette ligne: zend_extension = "/ usr/lib/php5/20121212/xdebug.so"
  8. service Apache2 redémarrer
  9. redémarrer l'IDE
0
dtmiRRor