3

Настройка Xdebug и IDE для отладки удаленного (remote) сервера

Постоянные проблемы с отладкой на удаленном сервере у знакомых и друзей подтолкнули меня написать подробный пост про настройку Xdebug и IDE для отладки remote веб-сервера.

Следующая статья описывает настройку Xdebug, когда сервер разработки находится за NAT-ом (сервер не имеет прямого доступа по IP к машине с IDE).

Предполагается, что Linux + Apache + php установленjо и работает корректно.

Рассматривается на примере Ubuntu, но это легко перенести на любую систему *nix.

Установка

После установки проверьте, что расширение подгрузилось через вывод функции phpinfo():


xdebug-phpinfo

 

или из командной строки

Если в командной строке xdebug присутствует, а в phpinfo нет, видимо конфигурация apache не обновлялась. Перезапустите веб-сервер или укажите перечитать конфигурацию.

Если его нет и в выводе php -i командной строки — укажите php вручную откуда загружать расширение.

Настройка

Для настройка Xdebug необходимо установить некоторые параметры, отвечающие за удаленную отладку в файле-конфигурации xdebug.

Можно установить эти параметры прямо в php.ini, но лучше использовать для этого специальную конфигурацию (xdebug.ini).

Веб-сервер (apache)

Настроем xdebug для веб-сервера.

В моей версии Ubuntu 14.04 файл конфигурации лег /etc/php5/mods-available/20-xdebug.ini

Отредактируем его (используйте любой удобный для вас редактор)

Основные параметры это:

Описание остальных параметров можно прочитать на официальном сайте.

Перегружаем конфигурацию apache:

и проверяем что наши параметры изменились в phpinfo().

IDE (phpStorm 7)

Перейдем к настройке вашей любимой IDE.

  1. Проверяем, что порт отладки соответствует тому, что мы прописали выше (9000):
    phpStorm -> File -> Settings -> [Project Settings] -> PHP -> Debug
    xdebug-phpstorm-settings-xdebug
  2. Создаем конфигурацию отладки:
    Debug -> Edit Configurations -> Create Web Application configuration
    xdebug-phpstorm-debug-edit_configurations
    xdebug-phpstorm-add-web_app
  3. Настраиваем созданную конфигурацию (одиночный экземпляр отладчика, браузер для отправки HTTP запроса с сессией Xdebug, сервер и маппинг путей к файлам):
    xdebug-phpstorm-debug-server-settings

Отладка!

Если все было сделано правильно, то можно установить точку остановки, в файле, который в любом случае будет выполняться сервером, например в index.php.

И запускаем отладку.

Браузер должен выполнить HTTP запрос с GET -параметром XDEBUG_SESSION_START=%UNIQUE_ID%, который запустит инициализацию соединения со стороны веб-сервера по указанному IP-адресу и порту, где уже слушает IDE и ждет когда же остановить выполнение (GIF-ка, честно сворованная с оф.сайта Xdebug, очень хорошо это иллюстрирует).

xdebug-phpstorm-debug-process

Enjoy!

3 Comments

  1. Респектище! Я эту инфу без мегалитров воды, и при этом в полном объеме, только у вас смог найти

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *