wake-up-neo.net

Xdebug für Remote-Server, der keine Verbindung herstellt

Ich möchte, dass ein Team, das verschiedene Computer verwendet, auf einem remote -Server debuggen kann PHP, aber es fällt mir schwer, Xdebug in NetBeans 7.0.1 zum Laufen zu bringen. Ich habe viele Online-Tipps ausprobiert, aber ohne Erfolg.

Für das Protokoll habe ich Xdebug local erfolgreich auf einem Windows 7-Computer installiert, auf dem WampServer ausgeführt wird. Also habe ich can debug PHP mit Haltepunkten in NetBeans, sofern ich die Projekteigenschaften-> Run Configuration-> Run As -Eigenschaft auf Lokale Website) setze. Wie oben erwähnt, ist mein Ziel jedoch das Debuggen in NetBeans auf einer Remote-Website

Mein Server ist ein Ubuntu 11.04-Rechner. Ich habe die Ausgabe von http://www.xdebug.org/find-binary.php verwendet, um die richtige Binärdatei auf die Maschine zu setzen. Ich habe alle php.ini-Dateien, die ich finden konnte (in den beiden php5/Apache2- und php5/cli-Verzeichnissen) geändert, um diese Zeilen aufzunehmen:

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

Wenn ich die phpinfo.php-Webseite überprüfe, heißt es: 

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

Xdebug scheint also richtig installiert zu sein. Beim Debuggen in NetBeans erhalte ich jedoch die endlose Statusbalken-Nachricht Waiting For Connection (netbeans-xdebug). Wenn ich die Stopp-Taste drücke, erhalte ich Innerhalb von X Sekunden wurde keine Verbindung von xdebug erkannt. Der Grund könnte sein, dass xdebug nicht installiert oder nicht richtig konfiguriert ist.

Vielleicht verwechsle ich hier lokale Einstellungen mit Servereinstellungen? Ein post said xdebug.remote_Host sollte auf IP des Rechners, auf dem NetBeans ausgeführt wird gesetzt werden, aber ich möchte, dass ein Team mit Computern mit unterschiedlichen IP-Adressen debuggen kann. Ein Problem könnte der Port 9000 sein, aber ich habe überprüft, dass er nicht blockiert ist.

Jede Hilfe, die das klären könnte, wäre dankbar!

33
Gruber

Der Server, auf dem PHP (und XDebug) ausgeführt wird, muss eine Verbindung zu Ihrer Workstation/Ihrem Desktop herstellen können. 

Diagram

Sie müssen den Server entsprechend einrichten, indem Sie ihm entweder mitteilen, dass eine Verbindung zu einer spezifischen IP-Adresse (xdebug.remote_Host) hergestellt werden soll, oder dass Sie automatisch eine "Verbindung herstellen" (xdebug.remote_connect_back). Letzteres hat jedoch einige Auswirkungen auf die Sicherheit. Diese sind in der Anleitung im Handbuch angegeben.

51
Linus Kleen

Die Schlüsselrichtlinie lautet:

xdebug.remote_connect_back = On

Dadurch kann der Webserver eine Verbindung mit dem Computer herstellen, der eine Debugging-Sitzung anfordert. Auf diese Weise müssen Sie eine IP-Adresse nicht fest programmieren und können Xdebug freigeben. Diese Direktive war in früheren Versionen nicht vorhanden und wird in Tutorials und Dokumentationen oft weggelassen.

Sie müssen auch sicherstellen, dass jeder Clientcomputer eingehende Verbindungen zu Port 9000 (xdebug.remote_port) akzeptiert. Dazu gehört das Konfigurieren der Firewall und das Sicherstellen, dass der Debugger-Client betriebsbereit ist

16

Für mich funktioniert xdebug.remote_connect_back = On nicht. Was ich getan habe, war das ssh Port Forwarding auf meinem Client-Rechner einzustellen.

xdebug config auf dem entfernten Rechner:

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

weiterleiten von Ports auf dem Clientcomputer:

ssh -g -N -lusername -R9000:127.0.0.1:9000 [remote.Host.ip]

Der Shell-Zugriff auf dem Remote-Computer muss zulässig sein. 

15
medium8

In meinem Fall haben mir diese Befehle geholfen:

xdebug.remote_enable = On
xdebug.remote_autostart=1

Hinweis: Der Debugger funktioniert auch, wenn die Variable GET/POST/COOKIE wegen 'xdebug.remote_autostart = 1' nicht vorhanden ist

5
Asaf Hananel

Vielen Dank für xdebug.remote_connect_back = On auf der Serverseite php.ini
Außerdem musste ich dieses Plugin für Chrome verwenden, um die Debugging-Sitzung in PhpStorm starten zu können

0
Dmitry Davydov

Sie benötigen Set:

xdebug.remote_Host=192.168.1.104

192.168.1.104 ist die IP-Adresse des Clients, an der Sie mit der IDE arbeiten

0
beto.bateria

Ich hatte das gleiche Problem ein paar Mal, als ich versuchte, das Docker zu konfigurieren, und nachdem ich mir mehrere Male den Kopf gekratzt hatte, wurde mir klar, dass dies der Weg war, das Problem zu beheben. Also entschied ich mich, dies hier als Antwort für mein zukünftiges Ich zu verwenden.

Die Dockerfile fügte diese Anweisung meistens der php.ini hinzu:

xdebug.remote_connect_back     = on

Dies würde dazu führen, dass alles in Ordnung erscheint, aber irgendwie wurden keine Debug-Verbindungen tatsächlich von PHP storm erfasst. Das Ersetzen der obigen Zeile mit den folgenden Punkten behebt das sofort.

xdebug.remote_connect_back     = 0
xdebug.remote_Host             = Host.docker.internal

Danach müssen Sie natürlich noch Folgendes ausführen: $ docker-compose down$ docker-compose build und $ docker-compose up -d

0
Jules Colle

Mit welcher Seitenerweiterung starten Sie das Debuggen? Ich erinnere mich, dass ich verrückt geworden bin und schlaflose Nächte verbracht habe, wo alle Einstellungen mit XDebug großartig sind. Das Problem war, dass ich nicht mit .PHP startete, sondern mit .HTML

Wenn Sie dann versuchen, Ihr Debugging mit der .PHP-Datei zu starten.

0
Abdul Munim