Установка и удаленная отладка с помощью xdebug
Table of contents
Introduction
У нас под рукой инстанс, поднятый в статье: Поднимаем инстанс t2.micro с Ubuntu Server 18.04 LTS на AWS.
Также в этом инстансе установлены PHP
7.2
и 7.3
, как описано в статье:
Установка нескольких версий PHP на Ubuntu 18.04.3 LTS.
Установка xdebug
Установим xdebug для php
:
sudo apt-get install php-xdebug
Настроим удаленную отладку для версии php 7.2
под Apache
в php.ini
:
sudo nano /etc/php/7.2/apache2/php.ini
Добавим в конец файла следующий конфиг:
[xdebug]
debug.profiler_enable = 0
xdebug.remote_enable = 1
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp
xdebug.idekey = PHPSTORM
Мы устанавливаем 9000
порт для отладки, но он может быть занят, поэтому убедимся в его доступности:
sudo netstat -tnlp | grep 900
Скрипт для отладки
Создадим в директории /var/www/html
файл index.php
и отредактируем его:
sudo nano /var/www/html/index.php
Добавим следующее содержимое и сохраним:
<?php
$server = $_SERVER;
phpinfo();
Удалим файл index.html:
sudo rm /var/www/html/index.html
Теперь необходимо проверить работу нашего web-сайта, но перед этим для инстанса необходимо создать новые Security Group
или же отредактировать текущую, добавив порты 9000
, 80
и 443
в доступ со всех IP
.
Подробнее описано в статье (там мы открывали 22 порт для инстанса): Поднимаем инстанс t2.micro с Ubuntu Server 18.04 LTS на AWS.
Открыв наш сервер в браузере по выданному Public DNS (IPv4)
, мы должны увидеть вывод phpinfo()
.
Поищем xdebug
в выводе и не найдем, т.к. мы не перезагрузили Apache
и самое время это сделать:
sudo service apache2 restart
На этом этапе настройки сервера завершены, теперь останется настроить локальную среду.
Настройка PHPStorm
Откроем PHPStorm
и создадим новый проект, в котором мы настроим деплой на наш сервер и будем отлаживать созданный index.php
.
Для настройки деплоя необходимо перейти в меню, как показано ниже:
Далее добавляем новый сервер и указываем параметры доступа:
После этого у нас появится соединение и при редактировании файла на локальном компьютере будет идти загрузка на удаленный сервер. Мы сразу загрузили файл с удаленного сервера и поставили брейкпоинты в коде:
Теперь перейдем к настройкам отладки:
Нами уже выполнен пункт 1 - установка xdebug
, остается выполнить пункт 2 - установка приложения для отладки в браузер.
По ссылке мы перейдем на страницу со списком расширений для различных браузеров. Мы будем пользоваться расширением для Chrome
:
В пункте 3 мы должны включить прослушивание порта отладки, нажав на Start listening
.
Если бы мы производили все настройки на локальной машине, то на данном этапе отладка уже работала бы, но т.к. php
исполняется на удаленном сервере,
а IDE
у нас на локальной машине, то нам необходимо связать уделенный порт с локальным, т.е. сделать проброс порта (port forwarding
).
Проброс удаленного порта на локальный
Мы имеем следующую схему соединения:
Мы находимся в домашней/корпоративной сети, у нашего компьютера IP
192.168.1.2
и есть доступ в интернет через Firewall+NAT
к нашему удаленному серверу 212.212.212.212
, на котором стоит php+xdebug
.
Сервер 212.212.212.212
не может подключиться на 192.168.1.2
напрямую, т.к. локальный компьютер находится за Firewall+NAT
, а для отладки нам необходимо такое подключение.
Для того, чтобы сервер 212.212.212.212
смог соединиться с 192.168.1.2
напрямую, необходимо поднять между серверами туннель.
Поднимать туннель мы будем с помощью PuTTy
, для этого создадим новую сессию:
Сконфигурируем автоматическую передачу логина:
Добавим ключ для соединения:
Настроим туннель, как показано ниже:
Не забываем вернуться на вкладку сессии и сохранить все настройки. После сохранения настроек открываем созданную сессию.
Теперь схема соединения следующая:
У нас открылся туннель для передачи xdebug отладочной информации с удаленного порта на наш локальный 9000
, который слушает IDE PHPStorm
.
Сессия отладки в PHPStorm
Теперь мы откроем наш сайт в браузере с установленным дополнением и активируем debug
.
При обновлении страницы данное расширение будет передавать дополнительный заголовок, который будет активировать отладку.
По данному заголовку PHPStorm
и будет понимать, что сессия отладки началась:
Принимаем сессию отладки и наш скрипт останавливается на поставленных брейкпоинтах:
Таким образом мы настроили удаленную отладку через проброс порта на локальную машину.
Дата редактирования : 2020-11-12 00:30:50
Автор : Rosko