PHp-cli-Skripte mit xdebug und netbeans debuggen?


72

Ich habe es geschafft, die Debug-Sitzung für PHP-CLI-Skripte über die IDE selbst zu initiieren, aber ich muss die Debugsitzung über die Shell / Befehlszeile starten. Dies sind ziemlich komplexe PHP-Wartungsskripte, die viele Eingabeparameter benötigen. Die Eingabe von Argumenten aus Netbeans heraus ist daher etwas umständlich.

Ich habe es schon einmal mit Zend Studio gemacht: https://zend18.zendesk.com/hc/en-us/articles/203838096-Debugging-PHP-CLI-Scripts , aber jetzt muss es mit Netbeans funktionieren.

Danke im Voraus.

Antworten:


111

Ich habe dies auf Ubuntu / Netbeans funktioniert von:

  • Kopieren der xdebug-Konfigurationszeilen aus der Datei /etc/php5/apache2/php.ini in /etc/php5/cli/php.ini
  • Festlegen einer Umgebungsvariablen mit dem Namen der Debug-Sitzung (Sie können dies über die Abfragezeichenfolge in der URL der Seite abrufen, die Netbeans startet, wenn Sie mit dem Debuggen beginnen). Der Befehl lautet also: export XDEBUG_CONFIG="idekey=netbeans-xdebug"

Dann geht es einfach darum, php myscript.phpdas Debuggen in Netbeans zu starten und dies über die Befehlszeile zu tun .

Hinweis: Wenn Sie remote mit NetBeans debuggen möchten, müssen Sie Debug File für die Datei verwenden, die über die Befehlszeile ausgeführt wird, nicht für normales Debug.


2
+1 dazu, danke @AndrewHancox. Für das Debuggen von Konsolen-Apps fand ich es auch hilfreich, "Projekte nicht öffnen" in Projekteigenschaften → Konfiguration ausführen → Erweitert ...
Adam Monsen

14
in Windows müssen Sie verwenden SET XDEBUG_CONFIG=idekey=xdebug(beachten Sie die fehlenden Anführungszeichen!)
Fischgräte

Ich arbeite nicht mit Ubuntu 12.04 LTS und Netbeans 7.3. Könnte ich mir einen Hinweis geben? mit gui funktioniert, aber mit konsole nr. Ich habe eine conf.d mit den xdebug-Einstellungen für Apache2- und CLI-Ordner. Ich habe die Variable auch exportiert.
GarouDan

1
GarouDan - Verwenden Sie "php -i | grep php.ini" an der Eingabeaufforderung, um zu überprüfen, ob Sie die richtige Datei bearbeitet haben, und "php -i | grep debug", um zu überprüfen, ob Sie die Debug-Einstellungen dort haben. Andernfalls hat sich der Idekey nicht geändert.
Andrew Hancox

1
Ich habe versucht , zu setzen , export XDEBUG_CONFIG="idekey=netbeans-xdebug"um /etc/php5/cli/php.ini, aber da war es seltsam und nichts funktionierte, ich googeln für „Ubuntu Export “ und erfuhr , dass es in ternminal ausgeführt werden soll , bevor PHP - Skript ausgeführt wird . Für mich war das nicht offensichtlich.
iVenGO

44

Fügen Sie xdebug.remote_autostart=OnIhrer php.ini-Datei hinzu oder fügen Sie sie -dxdebug.remote_autostart=Onals Parameter zum PHP- Binäraufruf ( php -d... script.php) hinzu.

Siehe http://xdebug.org/docs/remote


3
Ich benutze PhpStorm unter Windows für meine IDE und basiert auf johannes beantworte ich meine PHP - Skripte rufen aus wie so codephp -dxdebug.remote_autostart = On -didekey = PhpStorm -dremote_host = localhost -dprofiler_enable = 1 MY_PHP_PAGE.php PARAM1 PARAM2code
Coenie Richards

3
@Coenie Richards, das sollte sein: php -dxdebug.remote_autostart = On -dxdebug.idekey = PHPSTORM -dxdebug.remote_host = localhost MY_PHP_PAGE.php PARAM1 PARAM2
Tim

16

Ich werde alles zusammenfügen, das Folgende funktioniert für mich.

file:
/etc/php5/cli/php.ini

zend_extension="/usr/lib/php5/20121212/xdebug.so" -> xdebug bin path
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_handler="dbgp"
xdebug.remote_mode="req"
xdebug.remote_port=9000 -> same port configured in netbeans debugging tab
xdebug.idekey="netbeans-xdebug" -> same ide configured in netbeans debuggin tab
xdebug.remote_autostart=1

dann ohne irgendeinen anderen Parameter

php script.php


2

Ich hatte das gleiche Problem, meine Lösung war folgende:

  1. Umgebung: Netbeans 8.2 unter Windows (Apache + PHP)
  2. Angenommen, Sie haben PHP und NetBeans bereits für das Debuggen von Code mit Xdebug konfiguriert ( http://wiki.netbeans.org/HowToConfigureXDebug#Notes_on_Windows_Configuration ).
  3. Erstellen Sie auf NetBeans eine neue Konfiguration ("Projekteigenschaften"> "Konfiguration ausführen"> "Neu ...").
  4. Im neuen Konfigurationssatz Webbrowser nicht öffnen („Erweitert“> „Webbrowser nicht öffnen“)
  5. Aktivieren Sie die neu erstellte Konfiguration (Dropdown in der Symbolleiste).
  6. Haltepunkt für Debug setzen
  7. Debug öffnen (STRG + F5)
  8. Terminalfenster öffnen ("Extras"> "In Terminal öffnen")
  9. Geben Sie das Terminal ein: $ export XDEBUG_CONFIG = "idekey = netbeans-xdebug" (der Wert "netbeans-xdebug" muss mit "Tools"> "Options"> "Debugging"> "Session ID" übereinstimmen)
  10. Geben Sie das Terminal ein: $ php.exe -f "C: \ Apache24 \ htdocs \ www.SiteName \ ScriptName.php" - "Arg1 = x & Arg2 = y"
  11. Folgen Sie dem Debug…

0

Ich hatte das gleiche Problem. Meine Lösung war folgende:

In Netbeans> Projektfenster> Rechtsklick auf das PHP-Projekt> Eigenschaften> Konfiguration ausführen. Erstellen Sie eine neue Konfiguration.

Geben Sie die richtigen Werte ein:

  • Als "Skript" ausführen
  • PHP-Interpreter einstellen
  • Änderungsindexdatei in meinem Fall war es "cron / index.php".


0

Stellen Sie sicher, dass Sie auch den Wert DBGP_IDEKEY einrichten, da dies normalerweise kein idekey ist . Zum Beispiel unter Linux:

export DBGP_IDEKEY="netbeans-xdebug" 
export XDEBUG_CONFIG="netbeans-xdebug=netbeans-xdebug"
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.