2013-10-02 4 views
56

Wie kann ich einen REST-Client (wie den in PHPStorm oder POSTman eingebauten) bekommen, um mit XDebug zu arbeiten?XDebug und RESTful Server mit PHPSstorm oder POSTman

In meiner aktuellen Konfiguration von XDebug, mit PHPStorm und der Bookmarklet provided kann ich es in Chrome und Firefox arbeiten lassen - aber sobald ich mit POSTman oder einem anderen REST-Client versuche, kann ich nicht Finde heraus, wie es los geht.

Prost.

+1

Verwenden Sie das "Handle-Handle" -Symbol, damit IDE auf Debug-Verbindungen wartet. Konfigurieren Sie dann entweder xdebug (php.ini), um alle ** PHP-Skripte zu debuggen ('xdebug.remote_autostart = 1') oder sehen Sie, ob Sie der URL den Startparameter xdebug session (' XDEBUG_SESSION_START = {{name}} ') hinzufügen wird helfen: http://xdebug.org/docs/remote. Oder .. Sie können xdebug cookie als einen der Header (z. B. den, der von bookmarklet gesetzt wird) übergeben. Anders als das: http://youtrack.jetbrains.com/issue/WI-17031 – LazyOne

+2

Ich versuchte zu vermeiden, dass XDEBUG bei jeder Anfrage starten - jedoch '' XDEBUG_SESSION_START = PHPSTORM' am Ende der URL funktioniert ein Vergnügen . (eine etwas unordentliche Lösung, aber eine, die funktioniert) –

Antwort

124

Bis http://youtrack.jetbrains.com/issue/WI-17031 werden Sie können eine dieser Ansätze versuchen, umgesetzt werden:

  1. Ihre xdebug konfigurieren (durch php.ini bearbeiten) jedes PHP-Skript zu debuggen, um zu versuchen (xdebug.remote_autostart = 1)

  2. Fügen Sie den Startparameter xdebug session zur tatsächlichen URL hinzu (XDEBUG_SESSION_START={{KEY}} - http://xdebug.org/docs/remote), zum Beispiel: ?XDEBUG_SESSION_START=PHPSTORM

  3. Pass xdebug Cookie als eine der Header (die, die durch bookmarklet oder Browser-Erweiterung, zum Beispiel festgelegt ist)

Damit dies funktioniert - stellen Sie sicher, dass „Telefon Griff“ Symbol aktiviert (Run | Start Listen for PHP Debug Connection) im Voraus.

+0

Vielen Dank für Ihre Antwort. Wie ich oben sagte, arbeitete der zweite für mich, obwohl ich denke, dass ich mehr daran interessiert wäre, den 3. zu implementieren - mein einziges Problem ist, dass ich keine Freude hatte, Cookies über POSTman oder PHPSstorm zu setzen. In jedem Fall, das funktioniert jetzt, also danke :) –

+1

Wenn jemand die REST-Konsole Chrome-Erweiterung verwendet, XDEBUG_SESSION_START als Schlüssel und PHPSTORM als Wert unter Request Payload (Request Parameter) hinzugefügt arbeitete für mich – JackalopeZero

+8

Das löste mein Problem, Ich musste die https: // fqdn/rest/route setzen? XDEBUG_SESSION_START = PHPSTORM, musste ich dann auch zum Header hinzufügen: Cookie: XDEBUG_SESSION = PHPSTORM.Ich debugge gerade einen erholsamen Service, also war das instrumental – krob

2

Das machte mich verrückt. Ich habe gerade auf PHP 7.1 aktualisiert und xdebug funktionierte nicht mehr. Ich aktualisierte die xdebug.so Datei (Linux) und php --version angezeigt, dass Xdebug wurde tatsächlich geladen und funktioniert. Aber als ich Postman benutzen würde, hat der Debugger nie begonnen.

Hier ist die Lösung. Wenn Sie Apache als Server verwenden, dann müssen Sie die PHP 7.1 Mods aktivieren und starten Sie Apache: sudo service apache2 restart

+0

Das löste das Problem für mich. Ich benutze Valet, Valet Stop und Valet Start haben es geschafft. – leonardfactory

-3

https://github.com/tacnoman/dephpugger Dieser lib Lauf der Debugger in Terminal (wie IPDB für Python und Byebug für Ruby). Ist sehr einfach zu bedienen und es gibt ein Beispiel, wie PHP Cli Skripte und Webserver laufen.

+0

benötigt weitere Informationen. –