Отладка расширения Joomla в IDE (PhpStorm) с помощью xdebug
Забудьте про var_dump()
или die()
при разработке расширения.
Оглавление
Самая важная функция, которая должна быть в нашей IDE - это отладчик. Это самый лучший способ понять, почему код работает не так, как ожидалось. Поэтому больше никаких print_r()
, var_dump()
или die()
.
Настройка Xdebug
Для отладки кода мы будем использовать Xdebug. Это популярный инструмент, который является расширением для PHP. Тем более, он уже предустановлен на нашем локальном и виртуальном сервере.
Виртуальный сервер CentOS
Если на виртуальном сервере Xdebug не установлен, то устанавливаем командой:
sudo yum install php-xdebug
Обратите внимание, что существуют две версии Xdebug - 2 и 3, и они отличаются по синтаксису настроек. Будьте внимательны!
Open Server
На локальном сервере (Open Server) открываем файл настроек PHP - php.ini
:
Находим раздел [Xdebug]. Подключаем расширение Xdebug и устанавливаем его параметры:
zend_extension = "%sprogdir%/modules/php/%phpdriver%/ext/php_xdebug.dll" xdebug.idekey = "PHPSTORM" xdebug.remote_enable = 1 xdebug.remote_port = 9000
Виртуальный сервер CentOS
На виртуальном сервере заходим в директорию /etc/php.d
, находим файл настроек Xdebug. Например это может быть /etc/php.d/15-xdebug.ini
. Открываем файл, подключаем расширение Xdebug и устанавливаем его параметры (строка zend_extension="xdebug.so"
чаще всего уже присутствует в этом файле, но обязательно убедитесь в ее наличии):
Для версии Xdebug 2
xdebug.idekey = "PHPSTORM" xdebug.remote_connect_back = 1 xdebug.remote_enable = 1 xdebug.remote_port = 9000
Для версии Xdebug 3
xdebug.idekey = "PHPSTORM" xdebug.mode = debug xdebug.client_port = 9003 xdebug.discover_client_host=1
Чтобы убедиться, что Xdebug активирован, мы можем зайти в панель управления Joomla, пункт меню Система > Информация о системе, вкладка Информация о PHP. На этой вкладке находим находим раздел Xdebug и проверяем настройки.
Инструкция по переходу от Xdebug 2 к Xdebug 3 https://xdebug.org/docs/upgrade_guide
Никогда не оставляйте включенным Xdebug и открытым порт на живом сервере. Это серьёзная уязвимость в безопасности.
Настройка браузера
Чтобы начать отладку, сначала необходимо активировать механизм отладчика на сервере с помощью специальных параметров запроса с вашего браузера. Делается это с помощью установки специальных кук отладки. Хотя вы можете делать это вручную, более удобно использовать расширение для браузера, которое позволяет включать отладчик одним щелчком мыши.
Здесь вы найдете ссылки на расширения отладки для различных браузеров. После установки, в настройках расширения указываем для параметра IDE Key значение, которое прописывали в php.ini
(PHPSTORM).
Настройка PhpStorm
Сначала настраиваем Xdebug. Заходим в настройки PhpStorm, далее Languages & Frameworks > PHP > Debug. В разделе Xdebug указываем порт, который прописывали в php.ini
(9000). Чтобы Xdebug не останавливался на первой строчке приложения, обязательно отключаем два нижних чекбокса.
Упрощенный способ отладки
В принципе после этого вы уже можете пользоваться отладкой – вам достаточно установить breakpoint в программе и активировать расширение отладки в браузере. PHPStorm спросит о входящем соединении, вы его подтвердите и можете изучать работу своей программы изнутри.
Но можно пройти до конца и настроить все по полной программе.
Если что-то пошло не так
Если вы вроде бы все сделали правильно, однако же запустить отладку не получается, вам поможет пункт меню Run -> Web Server Debug Validation
На что следует обратить внимание в первую очередь? Убедитесь, что у вас имеется последняя версия PHPStorm – крайне важно иметь актуальное обновление!
Полный способ
Теперь нам нужно добавить сервер. Переходим в Servers, нажимаем + и задаем параметры локального сервера:
- Name: задаем название, например JPathRu Local.
- Host: указываем URL локальной установки Joomla, в нашем случае http://jpathru.local.
- Включаем галочку Use path mappings и настраиваем маппинг - соответствие путей проекта путям на сервере.
Таким же образом добавляем виртуальный сервер и задаем его параметры:
И наконец добавляем настройки отладки. Заходим в Run > Edit Configurations, нажимаем + и выбираем в списке PHP Remote Debug. В открывшемся окне задаем параметры отладки локального сервера:
- Name: задаем название, например JPathRu Local.
- Включаем галочку Filter debug connection by IDE key.
- Выбираем в списке сервер JPathRu Local. В IDE key должно быть значение PHPSTORM.
Таким же образом добавляем параметры PHP Remote Debug для виртуального сервера: указываем в названии JPathRu Remote и выбираем сервер JPathRu Remote.
Процесс отладки
Для начала работы ставим breakpoint (точку останова), выбираем отладку JPathRu Local и щелкаем на зеленого жука.
Внизу откроется панель отладки, которая ожидает входящего соединения с IDE ключём PHPSTORM.
Открываем локальный сайт http://jpathru.local и активируем отладку в расширении браузера.
Переходим на страницу компонента http://jpathru.local/index.php?option=com_jpathru. Загрузка страницы должна "подвиснуть". Это значит, процесс остановился на точке останова.
Переходим в PhpStorm - в панели отладки должны отобразиться данные отладчика.
Таким же образом мы можем проводить отладку и на вирутальном сервере.
Подробнее о процессе отладки вы можете прочитать в официальной документации.
Поздравляем, var_dump()
или die()
теперь в прошлом.
- Последнее обновление: .