2009-12-22 18 views
22

Ich habe das nicht ganz herausgefunden. JEDE Dokumentation, die ich gefunden habe, behandelt die Verwendung von xdebug zum Debuggen von Skripten, die in Apache ausgeführt werden. Ich muss ein PHP CLI Skript debuggen.Wie kann ich ein PHP-CLI-Skript mit xdebug debuggen?

Also, zum Beispiel, wie übergebe ich die Variable XDEBUG_SESSION_START, um xdebug zum Anstoß zu bekommen?

Ich versuche speziell, eine CakePHP-Shell zu debuggen. Wenn jemand einen zusätzlichen Einblick in das hat, wäre ich sehr dankbar.

Danke.

+0

Sie auch hier sehen möchten: http: // Stackoverflow.com/questions/2288612/how-to-trigger-xdebug-für-eine-kommandozeile-php-script – selfawaresoup

Antwort

36

Es gibt ein paar Hinweise darüber in Xdebug's manual, wie zum Beispiel (unter Angabe):

export XDEBUG_CONFIG="idekey=session_name" 
php myscript.php 

Wenn Sie Eclipse PDT verwenden, um Ihre PHP-Skripte zu entwickeln und zu debuggen, ist es nicht viel Unterschied zwischen Apache oder CLI: Die Konfiguration ist ziemlich gleich, Sie müssen weder einen Webserver konfigurieren, noch eine URL angeben; Stattdessen müssen Sie den Pfad zur ausführbaren PHP-Datei angeben.

Über die XDEBUG_SESSION_START Variable: Nun, Sie starten das ganze Skript im "Debug-Modus", so dass Sie keine Ahnung von "Debugging-Sitzung" haben, würde ich sagen.


Zum Beispiel, hier ist was Window > Preference > PHP > PHP executables wie für mich sieht gerade jetzt, und auf der rechten Seite, was ich bekomme, wenn Sie auf die Edit Taste des ersten:

http://extern.pascal-martin.fr/so/xdebug-cli/1.png     http://extern.pascal-martin.fr/so/xdebug-cli/1-edit.png

Und das debug configurations Fenster:

http://extern.pascal-martin.fr/so/xdebug-cli/2.png

und den Start der Debugging: es funktioniert einfach:

http://extern.pascal-martin.fr/so/xdebug-cli/3.png


Hope this :-) Else

hilft, welche spezifischen Problem haben Sie stoßen?

8

Wenn Sie bash (oder Schale), ist dieses kleine Skript könnte kommen in praktisch verwenden:

alias drush-debug=drd 
function drd { 
    export XDEBUG_CONFIG="idekey=cli_session" 
    export SERVER_NAME="developer.machine" 
    export SERVER_PORT="9000" 
    drush "[email protected]" 
    unset XDEBUG_CONFIG 
    unset SERVER_NAME 
    unset SERVER_PORT 
}; 

oder wie unten

alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "[email protected]"' 

diese Weise können Sie don‘von den Kommentatoren vorgeschlagen t müssen Sie die Triggervariable jedes Mal manuell setzen und aufheben, wenn Sie debuggen möchten.

+6

Dies ist logisch äquivalent zu setzen die Umgebungsvariable in der gleichen Zeile wie der Befehl in bash, dh: "XDEBUG_CONFIG = 'idekey = cli_session' drush $ * ". Es gibt keine Notwendigkeit für eine Funktion, die die Variable setzt und dann löscht, die Shell exportiert die Variable automatisch in den Befehl. – Stabledog

+1

@Stabledog Wenn dies nicht der Fall ist, wird xDebug für alle nachfolgenden Drush-Befehle in der aktuellen Shell aktiviert, wenn ich mich nicht irre. Die Idee hinter dieser Funktion war, das PHP-CLI-Debugging vorübergehend zu aktivieren, aber es hat Vorbehalte. – Plamen

+1

@Plamen verwenden stattdessen "drush" $ @ "'. bash erweitert jedes Argument mit Anführungszeichen, so dass 'drush-debug cc" theme registry "funktioniert. Es ist nicht der intuitivste Aspekt von bash, aber es ist schön zu haben. –

2

einfach setzen Sie den folgenden Abschnitt auf die Datei php.ini

[XDebug] 
xdebug.max_nesting_level = 200 
xdebug.remote_enable=1 
xdebug.remote_port=9000 
;xdebug.profiler_enable=1 
xdebug.idekey=PHPSTORM 
xdebug.remote_autostart=1 

und ersetzen PhpStorm mit ide Schlüssel

Verwandte Themen