Xdebug pour le serveur distant ne pas connecter
Je veux une équipe à l'aide des ordinateurs différents pour être en mesure de débogage PHP sur un distance serveur, mais je vais avoir un moment difficile l'obtention de Xdebug pour travailler dans NetBeans 7.0.1. J'ai essayé en ligne de nombreux conseils, mais en vain.
Pour l'enregistrement, j'ai installé avec succès Xdebug localement sur une machine Windows 7 de course de WampServer. J'ai donc peut debug PHP avec des points d'arrêt dans NetBeans, à condition que je définir le Propriétés du Projet->Exécuter Configuration->Exécuter en tant Qu' propriété Site Web Local. Toutefois, comme indiqué ci-dessus, mon objectif est de débogage dans NetBeans sur un Site Web Distant.
Mon serveur est un Ubuntu 11.04 de la machine. J'ai utilisé la sortie de http://www.xdebug.org/find-binary.php de mettre le bon binaire sur la machine. J'ai modifié tous les php.ini
les fichiers que j'ai pu trouver (dans les deux php5/apache2
et php5/cli
répertoires) 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 coche phpinfo.php
page web, il est 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
Si Xdebug ne semble pas être installé correctement. Pourtant, quand j'ai essayer de débogage dans NetBeans, j'ai l'infini barre d'état message en Attente d'une Connexion (netbeans-xdebug). Quand j'appuie sur le bouton d'arrêt d'-je obtenir Pas de connexion à partir de xdebug a été détecté dans les X secondes. La raison pourrait être que xdebug n'est pas installé ou n'est pas correctement configuré.
Peut-être que je suis confus locale paramètres avec les paramètres du serveur ici? Un post dit xdebug.remote_host
doit être réglé à la IP de la machine qui exécute NetBeans, mais je veux une équipe pour être en mesure de débogage à l'aide de machines avec des adresses IP différentes. Un problème peut être le port 9000, mais j'ai vérifié qu'il n'est pas bloqué.
Toute aide qui pourrait clarifier ce serait apprécié!
- À l'aide de
xdebug.ide_key
et la valeur de certains complexes valeur devrait servir comme un mot de passe, iirc. - L'exécution de ce problème à nouveau des années plus tard, le problème a été causé par un paramètre du pare-feu qui empêche le serveur exécutant Xdebug de communiquer avec mon ordinateur de développement (voir @Linus Kleen réponse). Donc, vérifiez votre pare-feu.
- Oui, une sorte de NA(P)T est éventuellement tenu de transmettre entrant externe connexion à partir du serveur de développement sur votre ordinateur dans le réseau local.
Vous devez vous connecter pour publier un commentaire.
Le serveur qui exécute PHP (et XDebug) doit être en mesure de se connecter à votre poste de travail/ordinateur de bureau.
De sorte que vous aurez besoin le serveur qui est configuré en conséquence, soit par lui dire de se connecter à un spécifiques adresse IP (
xdebug.remote_host
) ou automatiquement "se connecter" (xdebug.remote_connect_back
). Ce dernier a certaines implications en termes de sécurité, même si. Ceux-ci sont décrits dans le manuel.xdebug.remote_connect_back=1
pour le php.les fichiers ini. Merci également pour noter les implications de sécurité.xdebug.remote_host
paramètre semble accepter une seule adresse, et avec de nombreux membres de l'équipe avec des adresses IP différentes, il me semblexdebug.remote_connect_back=1
est le seul paramètre qui fonctionne.php.ini
de contourner le connect-problème de dos. Notre département de développement est mis en place comme ça.xdebug.remote_port
réglage.xdebug.ide_key
et la valeur de certains complexes valeur devrait servir comme un mot de passe, iirc.La clé de la directive est-ce:
Cela permet au serveur web pour se connecter à l'ordinateur de demande pour une session de débogage. De cette façon, vous n'avez pas à coder en dur une adresse IP et sont en mesure de partager Xdebug. Cette directive n'était pas présent dans les versions précédentes et est souvent omis dans la documentation et les tutoriels.
Vous devez également vérifier que chaque ordinateur client accepte les connexions entrantes sur le port 9000 (
xdebug.remote_port
). Cela inclut la configuration des pare-feu et assurez-vous que le débogueur client est en place et en cours d'exécutionxdebug.remote_connect_back
réglage. Depuis NetBeans lui-même produit un message d'aide, avec des propositions de php.paramètres ini, j'ai supposé que c'était une question de trouver les bonnes valeurs pour ces paramètres plutôt que d'ajouter un autre nouveau les paramètres de la ligne.xdebug.remote_connect_back
. Avec un tunnel SSH, la machine distante est apparemment censé se connecter à son propre port 9000 (d'oùxdebug.remote_port=9000
etxdebug.remote_host=localhost
). Par conséquent, vous n'avez pas envie d'essayer de se connecter à l'adresse ip à distance par exemple 173.12.34.25:9000, mais localhost:9000. Aussi, le remote_host et connect_back options ne manquent pas de sens de les utiliser ensemble.Pour moi,
xdebug.remote_connect_back = On
ne fonctionne pas.Ce que j'ai fait a été de mettre ssh la redirection de port sur ma machine cliente.
xdebug config sur la machine distante:
forwarder les ports sur la machine client:
L'accès shell sur la machine distante doit être autorisé.
Dans mon cas, ces commandes qui m'a aidé:
Avis: le débogueur de travail, même si GET/POST/COOKIE variable n'est pas présent en raison de " xdebug.remote_autostart=1'
Merci pour
xdebug.remote_connect_back = On
sur le côté serveur php.iniAussi, j'ai eu à utiliser ce plugin pour Chrome afin d'être en mesure de démarrer la session de débogage dans PhpStorm
J'ai eu le même problème une couple de fois, tout en essayant de configurer le panneau et après de me gratter la tête à plusieurs reprises j'ai réalisé que c'était le moyen pour résoudre ce problème. J'ai donc décidé de mettre cela ici comme une réponse pour mon futur moi.
La plupart du temps le Dockerfile a été l'ajout de cette de cette déclaration de php.ini:
Ce serait faire tout semble ok, mais de toute façon pas de débogage connexions ont été réellement pris en PHP tempête. Remplacement de la ligne ci-dessus avec le suivant instantanément résout des choses pour moi.
Bien sûr, après que vous avez encore besoin de courir:
$ docker-compose down
$ docker-compose build
et$ docker-compose up -d
host.docker.internal
peu...je peux vous embrasser maintenant.Ce que la page de l'extension êtes-vous tirer jusqu'à démarrer le débogage? Je me souviens que je suis allé noix et a passé des nuits blanches où tous les paramètres avec XDebug sont excellents. Le problème était que je n'étais pas partir avec
.PHP
plutôt de commencer avec.HTML
.Si vous êtes, alors essayez de démarrer votre débogage avec
.PHP
fichier.Vous devrez:
192.168.1.104
est l'ip du client, où que vous travaillez avec les IDE