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.
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
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)"
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.
installer XAMPP
installez netbeans pour PHP.
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).
Ouvrez le panneau de configuration de XAMPP et démarrez Apache. Si le port 80 est libre, aucun problème ne devrait survenir.
Ouvrir localhost dans le navigateur devrait afficher la page d’accueil XAMPP.
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.
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)
Allez au panneau de contrôle XAMPP, cliquez sur le bouton Config devant Apache et sélectionnez php.in
,
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"
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"
Redémarrez le serveur Apache.
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
.
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.
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.
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/
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:
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.
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:
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
)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é.
Ajouter ceci a fonctionné pour moi:
xdebug.idekey=netbeans-xdebug
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.
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.
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.
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.
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.
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é!
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]
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:
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
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.
Sélectionnez un navigateur spécifique pour le débogage:
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
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):
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.
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.
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
Pour les utilisateurs Ubuntu: