Ми}{@лbI4

Блог хеллоуворлдщика

Настройка Xdebug на Vagrant

08.12.2017 workenv, vagrant, xdebug

Работаю, никого не трогаю и тут меня спрашивают, "как настроить xdebug на vagrant?"... O_o Я такой про себя, "как... как и везде". И вспомнив, что я уже не раз, как на работе коллегам помогал настраивать Xdebug на Vagrant, понял, что это действительно полезная тема. И пусть все, кто ищет решение данного вопроса натыкаются на данную статью.

Для работы нам понадобится:

  • PhpStorm
  • Vagrant
  • Установленный и настроенный PHP в Vagrant

Сразу прошу прощения у всех тех, кого огорчил с NetBeans. К сожалению, с недавнего времени работаю на PhpStorm. Если отключить все ненужное, то получается очень удобная IDE с клевыми плюхами, которых нет в NetBeans.

Настройка подразумевает последующую работу через "веб-морду". По поводу CLI в статье ничего нет.

В первую очередь для нашей инструкции Vagrant должен быть настроен с использованием Private Networks, а именно Static IP. Если у вас не так - исправьте это, и запомните указанный IP адрес. Он нам еще понадобится.

Итак, заходим под ssh на нашу виртуальную машину:

$ vagrant ssh

Примеры настройки указаны для PHP 7.1 с php-fmp. Будте внимательны при копировании. У вас может быть другая версия PHP, другие пути и отсутствовать php-fpm вообще.

Установим php-xdebug:

$ sudo apt-get install php7.1-xdebug

Создадим новый текстовый файл в домашней директории с любым названием, например, xdebug.sh и поместим в него следующее содержимое:

#!/usr/bin/env bash

xdebug=$(cat <<EOF
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_connect_back=1
xdebug.remote_log=/tmp/php-xdebug.log
xdebug.idekey=vagrant-xdebug # запомните этот idekey
xdebug.remote_host=192.168.20.20 # IP адрес вашей vagrant-машины, который мы указали при настройке Static IP
xdebug.max_nesting_level=1000
EOF
)
echo "${xdebug}" > /etc/php/7.1/fpm/conf.d/20-xdebug.ini # здесь стоит упомянуть, что вы должны указать свой путь до директории `conf.d` в php, где будет создан файл `20-xdebug.ini`

Сохраним и закроем файл. Теперь выполним его:

$ bash ./xdebug.sh

На этом этап настройки Xdebug на Vagrant закончен. Теперь мы должны настроить нашу IDE:

В PhpStorm перейдем в Preferences > Languages & Frameworks > PHP > Debug и убедимся, что у вас все тоже самое:

Перейдем в Preferences > Languages & Frameworks > PHP > Servers, где укажем наш vagrant-сервер:

Откроем Run/Debug Configurations:

Добавим новый PHP Debug Remote Configuration:

Укажем нашу ранее созданную настройку сервера и ранее указанный idekey в настройках Vagrant'а:

Посетим оф. странцу JetBrains с Browser Debugging Extensions и скачаем нужное расширение для своего браузера.

Откроем настройки ранее скаченного Debug Extension и укажем idekey, который мы уже указали в натсройках Вагранта и в настройках Run/Debug Configurations:

Теперь активируем Debug Extension и слушатель в нашей IDE:

И укажем точку остановки в каком-нибудь файле, который будет отработан во время запроса, нашего проекта:

Выполним запрос к сайту через наш браузер:

Возможно, у вас может появится окно информирующее о входящем соединении для отладки:

В этом окне нужно указать вашу точку входа в проект и подтвердить соединение. После этого настройка будет завершена и вы можете использовать Xdebug: