XDebug bietet die Konfigurationsanweisung "xdebug.profiler_enable_trigger", mit der die Profilerstellung aktiviert werden kann, indem beim Aufrufen eines Skripts über HTTP der GET- oder POST-Parameter "XDEBUG_PROFILE" übergeben wird. Dies ist praktisch, wenn Sie keine Profilerstellung für ALLE Ihre Skripte wünschen, sondern nur für einige Sonderfälle, ohne Ihre PHP-Konfiguration immer zu ändern.
Gibt es eine Möglichkeit, dasselbe Verhalten für Befehlszeilen-PHP-Programme zu erreichen? Ich habe versucht, "XDEBUG_PROFILE" als Befehlszeilenargument zu übergeben, aber es hat nicht funktioniert.
Im Allgemeinen funktioniert das Profiling von Befehlszeilen-PHP gut, aber ich möchte die gleiche Flexibilität pro Anruf wie bei einem Browser und einem HTTP-Server.
Irgendwelche Vorschläge?
quelle
Antworten:
Sie können INI-Einstellungen mit dem
-d
Flag übergeben :php -d xdebug.profiler_enable=On script.php
.quelle
alias phpp="php -d xdebug.profiler_enable=1"
. Auf diese Weise, wenn Sie kein Profil verwenden möchten, verwendenphp
Sie es einfach und wenn Sie es verwendenphpp
.alias xphp="php -d xdebug.profiler_enable=On -d xdebug.profiler_output_dir=."
. Dadurch wird die Debug-Ausgabe immer in Ihrem aktuellen Arbeitsverzeichnis gespeichert.phpp.cmd
Datei erstellen, diephp -d xdebug.profiler_enable=On %*
Sie dann einfach ausführen könnenphpp <args>
.Ich habe dies auf Ubuntu / Netbeans funktioniert von:
Dann geht es einfach darum, das Debuggen in Netbeans zu starten und "php myscript.php" in der Befehlszeile auszuführen.
quelle
Mit PhpStorm auf einem Remote-Webserver verwende ich diesen Befehl:
Dabei
server_name
steht der Name des Servers in der PhpStorm-Projektzentrifugationquelle
alias xphp="XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=example.com" php -d memory_limit=1G -d xdebug.remote_host=
echo $ SSH_CLIENT | hinzugefügt cut -d "=" -f 2 | awk '{print $ 1}'"
also wenn ich debuggen will, benutze ich xphp anstelle von phpWie auf der Seite Xdebug Remote Debugging beschrieben , kann die Profilerstellung auch über die
XDEBUG_CONFIG
Umgebungsvariable aktiviert werden , indem eine Direktive "profile_enable = 1" eingefügt wird:quelle
Ähnliches, aber anderes Verfahren, damit es während der Entwicklung auf einer VM mit Netbeans funktioniert.
Sie müssen das Remote-Aktivierungsflag, das Autostart-Flag, das Ide-Flag und den Namen Ihres Remote-Hosts übergeben.
quelle
Ich habe ein Shell-Skript für das Client-Debugging erstellt.
Skriptname: phpdebug
Ich habe dieses Skript eingefügt
/usr/bin
und ihm Ausführungsberechtigungen erteilt.Das Skript nimmt die an phpdebug übergebenen Argumente und ruft php mit den xdebug-Argumenten auf und hängt die an das Shell-Skript übergebenen Argumente an, das $ * am Ende.
quelle
XDEBUG_CONFIG
Umgebungsvariable setzen. Genau das und diexdebug.remote_host
Einstellung haben es funktioniert.In PhpStorm 7 mit WAMP funktionierte dies, indem ich meine bereits funktionierenden xdebug-Einstellungen von C: \ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini in den xdebug-Abschnitt von C: \ wamp \ bin \ php \ kopierte phpX.YZ \ php.ini. Dann habe ich mein Skript so ausgeführt:
Dies funktionierte sogar zum Debuggen von Laravel-Skripten
quelle
Dokumentation von Jetbrains
So starten Sie das Skript mit dem Debuggen mithilfe von PHP-Befehlszeilenschaltern Legen Sie eine Umgebungsvariable fest, die XDebug anweist, eine Verbindung zur IDE herzustellen:
Windows / MacOS / Linux
Hier sollte idekey einen zufälligen Wert haben.
Starten Sie PHP mit den folgenden Befehlszeilenoptionen:
Sie können 10.0.2.2 anstelle von 127.0.0.1 mit Vagrant verwenden (siehe verwandte SO-Frage).
quelle