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.

wurdalack
quelle

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.

Andrew Hancox
quelle
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

johannes
quelle
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

Darwin
quelle
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…
Marco Del Corto
quelle
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".
julianisch
quelle
0

Sie können das Dephpugger-Projekt verwenden, wenn Sie xDebug nicht für Ihre IDE konfigurieren möchten (ich hasse Konfigurationen).

https://github.com/tacnoman/dephpugger

Sie können den Debugger im Terminal ausführen, z. B. ipdb für Python und byebug für Ruby.

Renato Cassino
quelle
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"
Mike
quelle