Debugug PHP -Befehlszeilenskript in PHPSTORM
-
24-10-2019 - |
Frage
ich benutze Phpstorming Als mein Hauptwerkzeug zum Debuggen von PHP und bin sehr erfreut. Bisher habe ich Firefox verwendet, um die Skripte auszuführen, und Phpstorming fängt perfekt Pausen.
Jetzt habe ich eine Situation, in der ich ein PHP -Skript über Befehlszeile (nicht Browser) ausführe und wissen möchte, ob es eine Möglichkeit gibt, PHPStorm zu richten, um Pausen beim Ausführen eines PHP -Skripts über die Befehlszeile zu fangen?
Lösung
Bitte Beobachten/stimmen Das verwandte Phpstorming -Problem.
Im Moment ist die Konfiguration etwas kompliziert. Es sollte möglich sein, wie zu debuggen beschrieben im Zend KB, mit einem gefälschten Server und PHP Remote -Debug Konfiguration in PHPStorm. Beachten Sie, dass dieses Tutorial einen Fehler hat. Sie müssen Query_String so festlegen (unter Windows):
SET "QUERY_STRING=start_debug=1&debug_port=10137&debug_host=127.0.0.1&debug_stop=1&no_remote=1&debug_session_id=10000"
(Beachten Sie, dass der Unterschied in der Zitat ist, was wichtig ist).
Richten Sie Phpstorming wie auf den Screenshots gezeigt ein:
Drücken Sie die Debuggen Schaltfläche in der Haupt -Symbolleiste. PHPSTORM wird auf die Debugger -Verbindungen hören.
Führen Sie in der Befehlszeile Ihr Skript aus:
d:\dev\zend\ZendServer\bin\php.exe d:\work\attaches\sample\helps.php
PHPSTORM wird den Haltepunkt treffen:
Dies wurde unter Windows mit Zend Server -Installation getestet, sollte jedoch in den anderen Systemen und mit XDebug ähnlich sein.
Wenn Sie direkt von PHPSTORM debuggen möchten, verwenden Sie PHP -Skript Konfigurationstyp ausführen/debuggen. Ihre für dieses Projekt konfigurierte PHP -Instanz muss entweder haben Zend Debugger oder Xdebug in den Konfigurationsdateien aktiviert.
PHP -Heim- und Debugger -Modus kann in angegeben werden in File | Settings | PHP
.
Nur mit Zend Server -Installation überprüft (PHP -Startseite: d:\dev\zend\ZendServer\bin
) Und Zend Debugger funktioniert perfekt für mich.
Andere Tipps
Um das PHP -Debuging mit XDebug auf der Shell/Befehlszeile mit PHPSTORM zu aktivieren, ist es sehr einfach:
export XDEBUG_CONFIG="idekey=PHPSTORM"
Verwenden Sie in Windows CLI ein Satz anstelle des Exportierens.
set XDEBUG_CONFIG="idekey=PHPSTORM"
Stellen Sie sicher, dass PHPSTORM die PHP -Debug -Verbindungen anhört.
Um das Debuggen von der Befehlszeile zu deaktivieren: End:
unset XDEBUG_CONFIG
Dies (PHPStorm) ist der Standard-PHPStorm-IDE-Key.
- Klicken Sie auf Ausführen.
- Klicken Sie auf Konfigurationen bearbeiten ...
- Klicken Sie auf das Grün +
- Wählen Sie PHP -Skript.
- Geben Sie im Feld Name einen Namen an.
- Geben Sie den vollständigen Pfad zu Ihrem Skript im Feld Datei an.
- OK klicken.
- Wählen Sie das Skript aus, das Sie gerade in diesem Dropdown -Down -Bereich konfiguriert haben:
- Klicken Sie auf die Schaltfläche Ausführen oder Debug. Ihr Skript sollte ausgeführt und es sollte alle festgelegten Haltepunkte fangen.
Wenn Sie das Skript ausführen, können Sie hier die Ausgabe sehen:
Wenn Sie das Skript debuggen, können Sie hier die Ausgabe sehen:
Überprüfen Sie, ob Umgebungen Variablen SERVER_NAME
und SERVER_PORT
eingestellt sind. PHPStorm benötigt sie, um die richtige Zuordnung durchzuführen. Stellen Sie sie mit dem Export in der Bash oder manuell im PhpricScript ein. In beiden Fällen kann PHPStorm es dann unter finden $_SERVER['SERVER_NAME']
und $_SERVER['SERVER_PORT']
korrekt.
Für mich (auf macos) hat es so funktioniert:export XDEBUG_CONFIG="idekey=12345"
Keiner dieser Vorschläge funktionierte gut für mich.
Wenn Sie sich in derselben Situation befinden, versuchen Sie diesen Befehl (überprüfen Sie den richtigen PHP -Interpreter -Pfad).
/usr/bin/php -dzend_extension=xdebug.so -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_autostart=1 [PHP_SCRIPT]
Auf macos habe ich verschiedene bash_profile verwendet. Ich musste zuerst den folgenden Befehl ausführen:
source ~/.bash_profile
Dies änderte meinen PHP von integrierten/usr/bin/PHP zu dem über XAMPP installierten. Der Xdebug des Phpstorms begann nach dem obigen Befehl zu arbeiten.