it-swarm.com.de

PHP-Cli-Skripte mit Xdebug und Netbeans debuggen?

Es ist mir gelungen, die Debug-Sitzung für das PHP-Cli-Skript über die IDE selbst zu initiieren, aber ich muss die Debug-Sitzung über die Shell/Befehlszeile starten. Hierbei handelt es sich um recht komplexe Pflegungsskripts PHP, für die viele Eingabeparameter erforderlich sind. Die Eingabe von Argumenten aus Netbeans ist daher etwas umständlich.

Ich habe es schon mit Zend Studio gemacht: https://zend18.zendesk.com/hc/de-de/articles/203838096-Debugging-PHP-CLI-Scripts , aber jetzt muss ich es zum Laufen bringen Netbeans.

Danke im Voraus.

68
wurdalack

Ich habe diese Arbeit an Ubuntu/Netbeans von:

  • kopieren der xdebug-Konfigurationszeilen aus der Datei /etc/php5/Apache2/php.ini nach /etc/php5/cli/php.ini
  • festlegen einer Umgebungsvariablen mit dem Namen der Debugsitzung (dies kann aus der Abfragezeichenfolge in der URL der Seite abgerufen werden, die Netbeans beim Starten des Debuggens startet). Der Befehl lautet also: export XDEBUG_CONFIG="idekey=netbeans-xdebug"

Dann beginnen Sie einfach mit dem Debuggen in Netbeans und führen php myscript.php in der Befehlszeile aus.

Hinweis: Wenn Sie ein Remote-Debugging mit Netbeans durchführen möchten, müssen Sie die Debug-Datei für die Datei verwenden, die über die Befehlszeile ausgeführt wird, nicht das normale Debugging.

108
Andrew Hancox

Fügen Sie xdebug.remote_autostart=On zu Ihrer php.ini-Datei hinzu oder fügen Sie -dxdebug.remote_autostart=On als Parameter zum binären Aufruf von PHP (php -d... script.php) hinzu.

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

41
johannes

Ich werde alles zusammenstellen, das Folgende ist das was für mich funktioniert.

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 andere Parameter

php script.php

12
Darwin

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

  1. Umgebung: Netbeans 8.2 unter Windows (Apache + PHP)
  2. Angenommen, Sie haben bereits PHP und NetBeans zum 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 "Web Browser nicht öffnen" ("Erweitert"> "Web Browser nicht öffnen")
  5. Setze die neue Konfiguration als aktiv (Dropdown in der Symbolleiste)
  6. Haltepunkt für Debug festlegen
  7. Debug öffnen (STRG + F5)
  8. Terminalfenster öffnen ("Tools"> "In Terminal öffnen")
  9. Geben Sie folgendes Terminal ein: $ export XDEBUG_CONFIG = "idekey = netbeans-xdebug" (der Wert "netbeans-xdebug" muss mit "Tools"> "Optionen"> "Debugging"> "Sitzungs-ID" übereinstimmen)
  10. Geben Sie folgendes Terminal ein: $ php.exe -f "C:\Apache24\htdocs\www.SiteName\ScriptName.php" - "Arg1 = x & Arg2 = y"
  11. Folgen Sie dem Debugging…
2
Marco Del Corto

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 in terminal ausführen, beispielsweise ipdb für Python und byebug für Ruby.

0
Renato Cassino

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

export DBGP_IDEKEY="netbeans-xdebug" 
export XDEBUG_CONFIG="netbeans-xdebug=netbeans-xdebug"
0
Mike

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

Klicken Sie in Netbeans> das Projektfenster> mit der rechten Maustaste auf das PHP-Projekt> Eigenschaften> Konfiguration ausführen. Erstellen Sie eine neue Konfiguration. 

Füllen Sie die korrekten Werte aus: 

  • Als "Skript" ausführen 
  • pHP-Interpreter setzen
  • Ändern Sie die Indexdatei in meinem Fall war es "cron/index.php".
0
Julian