Статьи

Как установить Xdebug с помощью PHPStorm и Vagrant

К настоящему времени мы все научились любить Vagrant и гибкость разработки, которую он обеспечивает. Независимо от платформы, вы можете легко запустить и запустить среду разработки, которая не только стабильна, но и идентична во всех отношениях среде, которую используют ваши коллеги, наставники или подопечные. Но так как приложения, которые мы разрабатываем, находятся внутри виртуальной машины, их сложно отладить с помощью Xdebug, который по умолчанию настроен на localhost.

Xdebug — это расширение PHP, которое позволяет вам отлаживать и профилировать код, просматривать подробные и читаемые трассировки стека при возникновении ошибок и многое другое. Для подробного ознакомления смотрите пост Шамеера . Если вы совершенно незнакомы с ним, вам лучше сначала установить его, следуя приведенным ниже процедурам, а затем обратиться к сообщению, указанному выше, чтобы получить подробную информацию о том, что Xdebug может сделать для вас и ваших приложений.

В этом руководстве мы настроим Xdebug с PHPStorm для PHP-приложений, размещенных на Vagrant.

подготовка

Чтобы подготовить среду, пожалуйста, установите и загрузите Homestead .

Как только он загрузится, vagrant ssh в него vagrant ssh и установите образец приложения Laravel. Вы можете сделать это, выполнив:

 composer create-project laravel/laravel Laravel --prefer-dist 

Когда вы получите экран приветствия Laravel, вы можете идти.

Установка Xdebug

Этот шаг можно пропустить. Homestead поставляется с Xdebug, установленным и включенным. Вы можете увидеть это, посмотрев на phpinfo () после загрузки Homestead:

или проверяя папки conf.d PHP FPM и PHP CLI:

 ls /etc/php5/fpm/conf.d ls /etc/php5/cli/conf.d 

Если вы видите xdebug.ini там, он загружен. Если вы используете какой-либо другой ящик Vagrant, а xdebug отсутствует, обратитесь к руководству по установке Shameer .

Настройка xdebug.ini

Чтобы разрешить удаленное использование Xdebug, нам нужно изменить ini файл и задать для него некоторые параметры, которые по умолчанию отключены. Файл xdebug.ini по умолчанию в xdebug.ini (находится в /etc/php5/mods-available ) изначально содержит только директиву, которая указывает PHP включить его, но больше ничего:

 zend_extension=xdebug.so 

Под этой строкой добавьте следующие параметры:

 xdebug.remote_enable = on xdebug.remote_connect_back = on xdebug.idekey = "vagrant" 

Закройте файл и перезапустите php-fpm: sudo service php5-fpm restart . Это все, что нам нужно настроить на конце Xdebug.

Настройка PHPStorm — Серверы

PHPStorm тоже нуждается в настройке. Сначала используйте его, чтобы открыть каталог приложения Laravel, которое мы создали на шаге 1:

Затем перейдите в настройки проекта и в разделе PHP -> Серверы добавьте новый. Дайте ему порт 8000, имя по вашему выбору, и в поле host укажите имя виртуального хоста вашего сайта (по умолчанию: homestead.app ). Затем используйте сопоставления путей для сопоставления путей, чтобы расположение вашей кодовой базы на хост-машине соответствовало расположению на виртуальной машине. Сделайте то же самое для public подпапки. В основном, folders блок folders из Homestead.yaml в это окно. Следуйте моему примеру:

Настройка PHPStorm — настройка отладки

Чтобы запустить отладчик в приложении, нам нужно создать среду отладки. Зайдите в Run -> Edit Configurations . Там создайте новую конфигурацию для «PHP Web Application»:

Примените новые настройки и закройте конфигурацию.

тестирование

Это все, что нужно для его настройки. Давайте посмотрим, работает ли он так, как ожидалось.

В app/routes.php закрытие домашнего маршрута так, чтобы он выглядел как код ниже:

 Route::get('/', function() { $a = [1, 2, 3, 4, 5]; array_pop($a); return View::make('hello'); }); 

Затем поместите точку останова рядом с каждой строкой замыкания, которая что-то делает, например:

Давайте проверим эти точки останова. Если приложение открыто в вашем браузере, закройте эту вкладку сейчас, иначе PHPStorm не сможет перезапустить его. Затем перейдите в Run -> Debug и запустите предопределенную конфигурацию отладки. Новая вкладка должна запуститься и немедленно вернуть вас в PHPStorm с выводом, похожим на этот:

Левый фрейм перечисляет трассировку стека — файлы, через которые уже прошел запрос — и останавливается на routes.php . На правой панели вы заметите, что объявляются только суперглобальные переменные — в настоящее время других переменных нет. Нажатие кнопки «Возобновить» переходит к следующей точке останова и выдает следующий результат:

Обратите внимание, что наша переменная $a сейчас там. Также обратите внимание, что вы можете расширить его, чтобы увидеть, что он содержит. Нажатие кнопки «Возобновить» еще раз приводит к несколько другому выводу:

Наш массив $a имеет на один элемент меньше благодаря выполненной array_pop операции array_pop . Это доказывает, что наши точки останова работают как задумано, и Xdebug был успешно настроен.

Вывод

Несмотря на первые впечатления, Xdebug очень прост в установке для использования через Vagrant, когда кто-то знает, что нужно сделать. Эти инструкции легко применимы к интеграции Xdebug в любую другую IDE, так что не стесняйтесь адаптировать их по своему усмотрению — только разделы PHPStorm, вероятно, нуждаются в изменении.

Вы отлаживаете через слой VM? Используете ли вы какие-либо другие подходы? Есть ли проблемы, о которых мы забыли упомянуть? Дайте нам знать!