Работаю, никого не трогаю и тут меня спрашивают, "как настроить 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: