Как я могу отладить скрипт PHP CLI с помощью xdebug? - PullRequest
23 голосов
/ 22 декабря 2009

Я не совсем понял это. КАЖДАЯ часть документации, которую я нашел, посвящена тому, как использовать xdebug для отладки скриптов, работающих в Apache. Мне нужно отладить PHP-скрипт CLI.

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

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

Спасибо.

Ответы [ 3 ]

36 голосов
/ 22 декабря 2009

В есть пара замечаний в руководстве * 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 на первой:

image
(source: pascal-martin.fr )
image
(source: pascal-martin.fr )

И окно debug configurations:

image
(source: pascal-martin.fr )

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

image
(source: pascal-martin.fr )


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

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

8 голосов
/ 11 февраля 2013

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

alias drush-debug=drd
function drd {
    export XDEBUG_CONFIG="idekey=cli_session"
    export SERVER_NAME="developer.machine"
    export SERVER_PORT="9000"
    drush "$@"
    unset XDEBUG_CONFIG
    unset SERVER_NAME
    unset SERVER_PORT
};

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

alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "$@"'

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

2 голосов
/ 10 декабря 2014

просто поместите следующий раздел в ваш 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

...