XDebug- und RESTful-Server mit PHPStorm oder POSTman


75

Wie kann ich einen REST-Client (wie den in PHPStorm oder POSTman integrierten ) dazu bringen, mit XDebug zu arbeiten?

In meiner aktuellen XDebug-Konfiguration kann ich PHPStorm und das Lesezeichen verwenden, sofern ich es sowohl in Chrome als auch in Firefox zum Laufen bringen kann. Sobald ich es jedoch mit POSTman oder einem anderen REST-Client versuche, kann ich nicht herausfinden, wie um es in Gang zu bringen.

Prost.


1
Verwenden Sie das Symbol "Telefonhandle", damit die IDE auf Debug-Verbindungen wartet. Konfigurieren Sie dann entweder xdebug (php.ini) zum Debuggen jedes PHP-Skripts ( xdebug.remote_autostart = 1) oder prüfen Sie, ob das Hinzufügen des Startparameters xdebug-Sitzung ( XDEBUG_SESSION_START={{name}}) zur URL hilfreich ist: xdebug.org/docs/remote . Oder Sie können das xdebug-Cookie als einen der Header übergeben (der beispielsweise durch das Lesezeichen festgelegt wird). Davon
abgesehen

2
Ich habe versucht zu vermeiden, dass XDEBUG bei jeder Anfrage gestartet wird. Das Hinzufügen ?XDEBUG_SESSION_START=PHPSTORMam Ende der URL ist jedoch ein Vergnügen. (eine etwas chaotische Lösung, aber eine, die funktioniert)
Daniel Hollands

Antworten:


187

Bis http://youtrack.jetbrains.com/issue/WI-17031 implementiert ist, können Sie einen der folgenden Ansätze ausprobieren:

  1. Konfigurieren Sie Ihren xdebug (indem Sie php.ini bearbeiten) so, dass versucht wird, jedes PHP-Skript zu debuggen ( xdebug.remote_autostart = 1)

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

  3. Übergeben Sie das xdebug-Cookie als einen der Header (der beispielsweise durch das Lesezeichen oder die Browsererweiterung festgelegt wird).

Damit dies funktioniert, stellen Sie sicher, dass das Symbol "Telefongriff" Run | Start Listen for PHP Debug Connectionim Voraus aktiviert ist ( ).


2
Vielen Dank für Ihre Antwort. Wie ich oben sagte, hat der zweite für mich funktioniert, obwohl ich glaube, dass ich mehr daran interessiert wäre, den dritten zu implementieren - mein einziges Problem ist, dass ich keine Freude daran hatte, Cookies über POSTman oder PHPStorm zu setzen. Auf jeden Fall funktioniert das jetzt, also danke :)
Daniel Hollands

2
Wenn jemand die Chrome-Erweiterung der REST-Konsole verwendet, hat das Hinzufügen von XDEBUG_SESSION_START als Schlüssel und PHPSTORM als Wert unter Anforderungsnutzlast (Anforderungsparameter) für mich
funktioniert

15
Dies löste mein Problem, ich musste fqdn / rest / route? XDEBUG_SESSION_START = PHPSTORM setzen , dann musste ich auch zum Header hinzufügen: Cookie: XDEBUG_SESSION = PHPSTORM. Ich
debugge

Die erste Antwort hat bei mir funktioniert; Ich bin interessiert zu wissen, ob es zu einer merklichen Verlangsamung einer Entwicklungsbox kommt, wenn PhpStorm beim Ausführen des Skripts nicht zuhört.
M1ke

1
@ M1ke Es wird eine Verzögerung von ca. 1 Sekunde geben, während xdebug versucht, eine Verbindung zum Debug-Client herzustellen (für jede Anforderung / jedes Hauptskript).
LazyOne

2

Das hat mich verrückt gemacht. Ich habe gerade auf PHP 7.1 aktualisiert und xdebug, das funktionierte, funktionierte nicht mehr. Ich habe die xdebug.soDatei (Linux) aktualisiert und php --versionangegeben, dass xdebug tatsächlich geladen wurde und funktioniert. Aber wenn ich Postman benutzen würde, würde der Debugger nie losgehen.

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


Dies löste das Problem für mich. Ich bin mit Valet, so zu tun valet stopund valet starthat den Trick.
Leonardfactory

1
xdebug.remote_timeout = 60000

Hat für mich gearbeitet. Da mein Mac sehr langsam war und der Remote-Debugger nach 200 ms abgelaufen war (Standardwert)


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.