XDebug oferuje dyrektywę konfiguracyjną „xdebug.profiler_enable_trigger”, która pozwala aktywować profilowanie poprzez przekazanie parametru GET lub POST „XDEBUG_PROFILE” podczas wywoływania skryptu przez HTTP. Jest to przydatne, jeśli nie chcesz profilować WSZYSTKICH swoich skryptów, ale tylko w kilku szczególnych przypadkach bez zmiany konfiguracji PHP.
Czy istnieje sposób na osiągnięcie tego samego zachowania dla programów PHP z linii poleceń? Próbowałem przekazać „XDEBUG_PROFILE” jako argument wiersza poleceń, ale to nie zadziałało.
Ogólnie rzecz biorąc, profilowanie PHP w wierszu poleceń działa dobrze, ale chciałbym mieć taką samą elastyczność dla połączeń jak w przeglądarce i serwerze HTTP.
Jakieś sugestie?
php
configuration
command-line
profiling
xdebug
selfawaresoup
źródło
źródło
Odpowiedzi:
Można przekazać ustawienia INI z
-d
flagphp -d xdebug.profiler_enable=On script.php
.źródło
alias phpp="php -d xdebug.profiler_enable=1"
. W ten sposób, gdy nie chcesz profilować, po prostu używajphp
i kiedy używaszphpp
.alias xphp="php -d xdebug.profiler_enable=On -d xdebug.profiler_output_dir=."
. To zawsze przechowuje dane wyjściowe debugowania w bieżącym katalogu roboczym.phpp.cmd
plik, zawierającyphp -d xdebug.profiler_enable=On %*
wtedy możesz po prostu uruchomićphpp <args>
.Mam to działa na Ubuntu / Netbeans przez:
Potem jest to po prostu przypadek rozpoczęcia debugowania w netbeans i zrobienia „php myscript.php” w linii poleceń.
źródło
z PhpStorm na zdalnym serwerze WWW używam tego polecenia:
gdzie
server_name
oznacza nazwę serwera w konfiguracji projektu PhpStormźródło
alias xphp="XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=example.com" php -d memory_limit=1G -d xdebug.remote_host=
echo $ SSH_CLIENT | cut -d \ "= \" -f 2 | awk „{print $ 1}”,"
więc kiedy chcę debugować, używam xphp zamiast phpJak opisano na stronie zdalnego debugowania Xdebug , profilowanie można również włączyć za pomocą
XDEBUG_CONFIG
zmiennej środowiskowej, włączając dyrektywę „profile_enable = 1”:źródło
Podobny, ale inny proces pozwalający na pracę z Netbeans podczas programowania na maszynie wirtualnej.
Musisz przekazać flagę włączonego zdalnego, flagę automatycznego uruchamiania, flagę ide i nazwę zdalnego hosta.
źródło
Utworzyłem skrypt powłoki do obsługi debugowania klienta.
nazwa skryptu: phpdebug
Umieściłem ten skrypt w
/usr/bin
i nadałem mu uprawnienia do wykonywania.Skrypt pobiera argumenty przekazane do phpdebug i wywołuje php z argumentami xdebug i dołącza argumenty przekazane do skryptu powłoki, $ * na końcu.
źródło
XDEBUG_CONFIG
zmienną środowiskową. Właśnie to ixdebug.remote_host
ustawienie sprawiło, że działało.W PhpStorm 7 za pomocą WAMP dostałem to do pracy, kopiując moje już działające ustawienia xdebug z C: \ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini do sekcji xdebug w C: \ wamp \ bin \ php \ phpX.YZ \ php.ini. Następnie uruchomiłem skrypt w następujący sposób:
Działa to nawet do debugowania skryptów rzemieślniczych laravel
źródło
Dokumentacja od Jetbrains
Aby rozpocząć skrypt od debugowania za pomocą przełączników wiersza polecenia PHP Ustaw zmienną środowiskową, która poinformuje XDebug o połączeniu się z IDE:
Windows / MacOS / Linux
Tutaj idekey powinien mieć wartość losową.
Uruchom PHP z następującymi opcjami wiersza poleceń:
Możesz użyć 10.0.2.2 zamiast 127.0.0.1 z Vagrant (patrz powiązane pytanie SO).
źródło