Как запустить профайлер XDebug для скрипта PHP в командной строке?

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:

  • копирование строк конфигурации xdebug из файла /etc/php5/apache2/php.ini в /etc/php5/cli/php.ini
  • установка переменной среды с именем сеанса отладки (вы можете получить это из строки запроса в URL-адрес страницы, когда netbeans запускается при запуске отладки): команда: XDEBUG_CONFIG = "idekey = netbeans-xdebug"

Тогда это просто случай начала отладки в 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