Отладка расширения Joomla в IDE (PhpStorm)

Забудьте про var_dump() или die() при разработке расширения.

Самая важная функция, которая должна быть в нашей IDE - это отладчик. Это самый лучший способ понять, почему код работает не так, как ожидалось. Поэтому больше никаких print_r(), var_dump() или die().

Настройка Xdebug

Для отладки кода мы будем использовать Xdebug. Это популярный инструмент, который является расширением для PHP. Тем более, он уже предустановлен на нашем локальном и виртуальном сервере.

Если на виртуальном сервере Xdebug не установлен, то устанавливаем командой:

yum install php-pecl-xdebug

На локальном сервере (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

На виртуальном сервере заходим в директорию /etc/php.d, находим файл настроек Xdebug. Например это может быть /etc/php.d/15-xdebug.ini. Открываем файл, подключаем расширение Xdebug и устанавливаем его параметры:

zend_extension="xdebug.so"
xdebug.idekey = "PHPSTORM"
xdebug.remote_connect_back = 1
xdebug.remote_enable = 1
xdebug.remote_port = 9000

Чтобы убедиться, что Xdebug активирован, мы можем зайти в панель управления Joomla, пункт меню Система > Информация о системе, вкладка Информация о PHP. На этой вкладке находим находим раздел Xdebug и проверяем настройки.

Никогда не оставляйте включенным Xdebug и открытым порт на живом сервере. Это серьёзная уязвимость в безопасности.

Настройка браузера

Чтобы начать отладку, сначала необходимо активировать механизм отладчика на сервере с помощью специальных параметров запроса с вашего браузера. Делается это с помощью установки специальных кук отладки. Хотя вы можете делать это вручную, более удобно использовать расширение для браузера, которое позволяет включать отладчик одним щелчком мыши.

Здесь вы найдете ссылки на расширения отладки для различных браузеров. После установки, в настройках расширения указываем для параметра IDE Key значение, которое прописывали в php.ini (PHPSTORM).

Настройка PhpStorm

Сначала настраиваем Xdebug. Заходим в настройки PhpStorm, далее Languages & Frameworks > PHP > Debug. В разделе Xdebug указываем порт, который прописывали в php.ini (9000). Чтобы Xdebug не останавливался на первой строчке приложения, обязательно отключаем два нижних чекбокса.

Параметры Xdebug в 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() теперь в прошлом.


© 2020 BinaryCraft. Все права защищены.