XDebug предлагает директиву конфигурации «xdebug.profiler_enable_trigger», которая позволяет активировать профилирование, передавая параметр GET или POST «XDEBUG_PROFILE» при вызове скрипта через HTTP. Это удобно, если вы не хотите профилировать ВСЕ ваши сценарии, но только для нескольких особых случаев, не меняя при этом свою конфигурацию PHP.
Есть ли способ достичь такого же поведения для программ PHP в командной строке? Я попытался передать «XDEBUG_PROFILE» в качестве аргумента командной строки, но это не сработало.
В общем, профилирование командной строки PHP работает хорошо, но я бы хотел иметь такую же гибкость для каждого звонка, как с браузером и HTTP-сервером.
Какие-либо предложения?
Вы можете передать настройки INI с помощью флага -d
: php -d xdebug.profiler_enable=On script.php
.
Я работал над Ubuntu / Netbeans:
Тогда это просто случай начала отладки в netbeans и выполнения «php myscript.php» в командной строке.
с PhpStorm на удаленном веб-сервере я использую эту команду:
XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=server_name" php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` myscript.php
где server_name
обозначает имя сервера в проекте PhpStorm conifuguration
Как описано на странице « Удаленная отладка Xdebug» , профилирование также можно включить с помощью XDEBUG_CONFIG
среды XDEBUG_CONFIG
в XDEBUG_CONFIG
директиву «profile_enable = 1»:
XDEBUG_CONFIG="profiler_enable=1" php ...
Подобный, но другой процесс для его работы с Netbeans при разработке на виртуальной машине.
Необходимо передать флаг удаленной активации, флаг автозапуска, флаг ide и имя вашего удаленного хоста.
php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_host=NAME.OF.HOST script.php
Я создал сценарий оболочки для обработки отладки клиента.
имя скрипта: phpdebug
#!/usr/bin/ksh php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*
Я поместил этот скрипт в /usr/bin
и дал ему разрешения на выполнение.
Скрипт принимает аргументы, переданные в phpdebug, и вызывает php с аргументами xdebug и добавляет аргументы, переданные в сценарий оболочки, $ * в конце.
В PhpStorm 7 с использованием WAMP я получил это для работы, скопировав мои уже рабочие параметры xdebug из C: \ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini в раздел xdebug файла C: \ wamp \ bin \ php \ phpX.YZ \ php.ini. Затем я запускал свой сценарий так:
php -d xdebug.idekey=PHPSTORM script.php
Это даже работало для отладки мастерских скриптов laravel
php -d xdebug.idekey=PHPSTORM artisan db:seed --force