Ответ 1
Вы можете передать настройки INI с помощью флага -d
: php -d xdebug.profiler_enable=On script.php
.
XDebug предлагает директиву конфигурации "xdebug.profiler_enable_trigger", которая позволяет активировать профилирование, передавая параметр GET или POST "XDEBUG_PROFILE" при вызове script через 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 Remote Debugging, профилирование также можно включить с помощью переменной среды 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
Я создал оболочку script для обработки отладки клиента.
script имя: phpdebug
#!/usr/bin/ksh
php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*
Я разместил этот script в /usr/bin
и дал ему разрешения на выполнение.
script принимает аргументы, переданные в phpdebug, и вызывает php с аргументами xdebug и добавляет аргументы, переданные в оболочку script, $* на конце.
В PhpStorm 7 с использованием WAMP я получил это для работы, скопировав мои уже рабочие параметры xdebug из C:\wamp\bin\apache\apache2.2.22\bin\php.ini в раздел xdebug C:\wamp\bin\PHP\phpX.YZ\php.ini. Затем я запустил script следующим образом:
php -d xdebug.idekey=PHPSTORM script.php
Это даже работало для отладки мастерских скриптов laravel
php -d xdebug.idekey=PHPSTORM artisan db:seed --force
Чтобы запустить сценарий с отладкой с помощью переключателей командной строки PHP Установите переменную среды, которая сообщит XDebug о подключении к IDE:
Windows/MacOS/Linux
export XDEBUG_CONFIG="idekey=123"
Здесь idekey должен иметь случайное значение.
Запустите PHP со следующими параметрами командной строки:
php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_connect_back=0 path/to/script.php
Вы можете использовать 10.0.2.2 вместо 127.0.0.1 с Vagrant (см. Соответствующий вопрос SO).