Подтвердить что ты не робот

Как я могу отлаживать PHP CLI script с помощью xdebug?

Я не совсем понял это. Всякая документация, которую я нашел, описывает, как использовать xdebug для отладки скриптов, запущенных в Apache. Мне нужно отладить php CLI script.

Так, например, как передать переменную XDEBUG_SESSION_START, чтобы получить xdebug для нажатия?

Я специально пытаюсь отлаживать оболочку CakePHP. Поэтому, если у кого-то есть дополнительное понимание этого, я был бы очень благодарен.

Спасибо.

4b9b3361

Ответ 1

В руководстве по Xdebug есть пара замечаний, например, (цитирование):

export XDEBUG_CONFIG="idekey=session_name"
php myscript.php

Если вы используете Eclipse PDT для разработки и отладки ваших PHP-сценариев, между Apache или CLI нет большой разницы: конфигурация выглядит совершенно одинаково, вам просто не нужно ни настраивать веб-сервер, ни указывать URL; вместо этого вы должны указать путь к исполняемому файлу PHP.

О переменной XDEBUG_SESSION_START: ну, вы запускаете весь сценарий в "режиме отладки", поэтому у вас нет понятия "сеанс отладки", я бы сказал.


Например, вот как выглядит Window > Preference > PHP > PHP executables для меня прямо сейчас, а справа - что я получаю, нажимая на кнопку Edit первой:

4YPCc.png
(источник: pascal-martin.fr)
qlB8a.png
(источник: pascal-martin.fr)

И окно debug configurations:

FjlJm.png
(источник: pascal-martin.fr)

И запуск отладки: это просто работает:

DTSWN.png
(источник: pascal-martin.fr)


Надеюсь это поможет :-)

Иначе, с какой конкретной проблемой вы сталкиваетесь?

Ответ 2

Если вы используете bash (или подобную оболочку), этот маленький script может пригодиться:

alias drush-debug=drd
function drd {
    export XDEBUG_CONFIG="idekey=cli_session"
    export SERVER_NAME="developer.machine"
    export SERVER_PORT="9000"
    drush "[email protected]"
    unset XDEBUG_CONFIG
    unset SERVER_NAME
    unset SERVER_PORT
};

или, как было предложено комментаторами ниже

alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "[email protected]"'

Таким образом, вам не нужно вручную устанавливать и отключать триггерную переменную каждый раз, когда вы хотите отлаживать.

Ответ 3

просто поставьте следующий раздел в свой php.ini

[XDebug]
xdebug.max_nesting_level = 200
xdebug.remote_enable=1
xdebug.remote_port=9000
;xdebug.profiler_enable=1
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1

и замените PHPSTORM на ваш ключ ide