К настоящему времени мы все научились любить 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? Используете ли вы какие-либо другие подходы? Есть ли проблемы, о которых мы забыли упомянуть? Дайте нам знать!