belobokin of Bitrix
1/22/2016 - 10:55 PM

Настройка xDebug и PhpStorm

Настройка xDebug и PhpStorm

Настройка xDebug на сервере:

#zend_extension="/opt/plesk/php/5.6/lib64/php/modules/xdebug.so"
zend_extension = xdebug.so
xdebug.overload_var_dump = 2
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_host = 127.0.0.1
xdebug.profiler_enable = 1
xdebug.remote_connect_back = 0
#xdebug.remote_log="/var/tmp/xdebug.log"

Дополнительно для площадок нужно менять на любой свободный порт: php_value xdebug.remote_port 9001, 9002 и т.д. Это необходимо для SSH туннеля, иначе xDebug будет все отправлять в первый же туннель.

Настройка phpStrom:

1.

File -> Settings -> Languages & Frameworks-> PHP -> Debug

Порт всегда 9000, выбирается любой свободный ЛОКАЛЬНЫЙ порт. Ставим галочку разрешающую принимать входящие соединения Остальные 2 галочки снимаем

2.

Run -> Edit configurations…

2.1 Вариант 1. PHP Remote Debug

Имя сессии всегда постоянно, но требуется «руками» устанавливать куку для дебага в браузере. Существующие плагины:

https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

https://addons.mozilla.org/ru/firefox/addon/the-easiest-xdebug/

2.2. Вариант 2. PHP Web Application

При запуске отладчика из PhpStorm открывается стартовая страница и устанавливается кука для дебага

3. Добавляем и настраиваем новый сервер

Обязательно отметить Use path mappings. Проставить соответствие локальной папки и абсолютного пути по серверу до document root.

4. Создание туннеля и проброс портов
4.1 Если работаем за роутером

сделать проброс выбранного локального TCP порта до своего компьютера.

4.2. Настройка туннеля

В настройках xDebug на сервере есть 2 варианта, либо указать параметр xdebug.remote_connect_back = 1, либо явно указать параметр xdebug.remote_host = Ваш IP. В первом случае xDebug будет отвечать «всем», что не очень безопасно. Во втором с xDebug сможет работать только один человек. Что бы обойти эти проблемы создаем SSH туннель с помощью Putty. Создаем рядом с pytty.exe файл tunnel.cmd и пишем в него:

start putty.exe -ssh <sshuser>@<sshhost> -R <remotexdebugport>:localhost:<localxdebugport>

Сохраняем, запускаем, вводим пароль, окно с putty продолжает висеть, это наш туннель. Когда xDebug на сервере получает команду на запуск – ответ отдается в 127.0.0.1: и туннелируется до клиентской машины, а там его уже получает PhpStorm

5. Отладка

  1. Выбираем сервер
  2. Запускаем прослушивание порта
  3. Запускаем отладку