Отладка расширения 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:

Путь до конфигурации PHP в Open Server

Находим раздел [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 не останавливался на первой строчке приложения, обязательно отключаем два нижних чекбокса.

Параметры Xdebug в PhpStorm

Упрощенный способ отладки

В принципе после этого вы уже можете пользоваться отладкой – вам достаточно установить breakpoint в программе и активировать расширение отладки в браузере. PHPStorm спросит о входящем соединении, вы его подтвердите и можете изучать работу своей программы изнутри.

Но можно пройти до конца и настроить все по полной программе.

Если что-то пошло не так

Если вы вроде бы все сделали правильно, однако же запустить отладку не получается, вам поможет пункт меню Run -> Web Server Debug Validation

На что следует обратить внимание в первую очередь? Убедитесь, что у вас имеется последняя версия PHPStorm – крайне важно иметь актуальное обновление!


Полный способ

Теперь нам нужно добавить сервер. Переходим в Servers, нажимаем + и задаем параметры локального сервера:

  • Name: задаем название, например JPathRu Local.
  • Host: указываем URL локальной установки Joomla, в нашем случае http://jpathru.local.
  • Включаем галочку Use path mappings и настраиваем маппинг - соответствие путей проекта путям на сервере.
Параметры локального сервера в PhpStorm

Таким же образом добавляем виртуальный сервер и задаем его параметры:

Параметры виртуального сервера в PhpStorm

И наконец добавляем настройки отладки. Заходим в Run > Edit Configurations, нажимаем + и выбираем в списке PHP Remote Debug. В открывшемся окне задаем параметры отладки локального сервера:

  • Name: задаем название, например JPathRu Local.
  • Включаем галочку Filter debug connection by IDE key.
  • Выбираем в списке сервер JPathRu Local. В IDE key должно быть значение PHPSTORM.
Параметры отладки в PhpStorm

Таким же образом добавляем параметры PHP Remote Debug для виртуального сервера: указываем в названии JPathRu Remote и выбираем сервер JPathRu Remote.

Процесс отладки

Для начала работы ставим breakpoint (точку останова), выбираем отладку JPathRu Local и щелкаем на зеленого жука.

Начало отладки в PhpStorm

Внизу откроется панель отладки, которая ожидает входящего соединения с IDE ключём PHPSTORM.

Панель отладки в PhpStorm

Открываем локальный сайт http://jpathru.local и активируем отладку в расширении браузера.

Активация Xdebug в браузере

Переходим на страницу компонента http://jpathru.local/index.php?option=com_jpathru. Загрузка страницы должна "подвиснуть". Это значит, процесс остановился на точке останова.

Переходим в PhpStorm - в панели отладки должны отобразиться данные отладчика.

Данные отладчика в панели отладки в PhpStorm

Таким же образом мы можем проводить отладку и на вирутальном сервере.

Подробнее о процессе отладки вы можете прочитать в официальной документации.

Поздравляем, var_dump() или die() теперь в прошлом.

  • Последнее обновление: .

© Joomla для профессионалов. Все права защищены.