Установка и настройка Xdebug для отладки PHP кода

Рассмотрим установку и настройку Xdebug 2 и Xdebug 3, свяжем его с PhpStorm и VSCode.

Оглавление статьи

  1. Вводная информация
  2. Установка Xdebug
  3. Настройка Xdebug 2
  4. Xdebug сессия
  5. Переопределение настроек Xdebug в PHP
  6. Что дальше

Вводная информация

В прошлой статье мы установили редактор кода VSCode и IDE PhpStorm, подготовили их к работе произведя различную настройку. В этой статье речь пойдет об установке Xdebug который позволит отлаживать PHP код.

Установка Xdebug

Подробная установка Xdebug описана на официальном сайте. Здесь же будет приведен пример касательно дистрибутива Pop!_OS. Чтобы установить Xdebug, наберите в терминале следующую команду.

BASH
sudo apt install php-xdebug

Xdebug установится в качестве расширения для PHP. Чтобы проверить успешность установки Xdebug, введем в терминале команду.

BASH
php --ini | grep xdebug

В терминале должен отобразиться следующий результат /etc/php/8.1/cli/conf.d/20-xdebug.ini. Это путь до конфигурационного файла Xdebug, его в дальнейшем мы будем настраивать.

Так же для проверки можно ввести команду.

BASH
php -v

Примерный результат ответа.

BASH
PHP 8.1.2-1ubuntu2.14 (cli)(NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.14, Copyright (c), by Zend Technologies
with Xdebug v3.1.2, Copyright (c) 2002-2021, by Derick Rethans

По умолчанию с установкой PHP устанавливается расширение OPcache для кэширования байт кода. Есть небольшая особенность, связанная с Xdebug и OPcache о которой следует знать.

Если вы хотите использовать Xdebug и OPcache вместе, у вас должна быть строка zend_extension для Xdebug ниже строки для OPcache или файл xdebug.ini должен начинаться с большего числа (т. е. 99-xdebug.ini и 20-opcache.ini), иначе они не будут работать должным образом вместе.

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

Настройка Xdebug 2

По умолчанию всегда устанавливается крайняя версия Xdebug, поэтому будет установлена версия Xdebug 3. Но если когда нибудь попадется Xdebug 2, то настраивается он следующим образом.

Путь до конфигурационного файла 20-xdebug.ini можно узнать введя команду.

BASH
php --ini | grep xdebug

Вводим в терминале команду.

BASH
sudo gedit /etc/php/8.1/cli/conf.d/20-xdebug.ini

Откроется файл с настройками, вставим в него следующее содержимое.

BASH
# Подключение модуля
zend_extension=xdebug.so

# develop режим для var_dump, debug для использования точек останова
xdebug.remote_enable=1

# Отладка для каждого запроса
xdebug.remote_autostart=1

# Обработчик отладки
xdebug.remote_handler="dbgp"

# Отключить подключение клиента по http
xdebug.remote_connect_back=0

# Хост к которому подключаемся
xdebug.remote_host=localhost

# Порт
xdebug.remote_port=9003

#IDE
xdebug.idekey=PHPSTORM

# Log
xdebug.remote_log=/var/log/xdebug/xdebug.log

# Если этот параметр равен 1, Xdebug отключит оператор @ (игнорирование ошибок в php)
xdebug.scream=1

# Статистика
xdebug.profiler_enable=1
xdebug.profiler_enable_trigger=1 # для GET ?XDEBUG_PROFILE
xdebug.profiler_output_dir = "путь до каталога где будет храниться статистика"

Настройка Xdebug 3

Xdebug 3 более предпочтительная и современная версия которую следует использовать.

Путь до конфигурационного файла 20-xdebug.ini можно узнать введя команду.

BASH
php --ini | grep xdebug

Вводим в терминале команду.

BASH
sudo gedit /etc/php/8.1/cli/conf.d/20-xdebug.ini

Откроется файл с настройками, вставим в него следующее содержимое.

BASH
# Подключение модуля
zend_extension=xdebug.so

# develop режим для var_dump, debug для использования точек останова
xdebug.mode=develop,debug

# Отладка для каждого запроса
xdebug.start_with_request=yes | trigger #- для GET ?XDEBUG_PROFILE

# Отключить подключение клиента по http
xdebug.discover_client_host=0

# Хост к которому подключаемся
xdebug.client_host=localhost

# Порт
xdebug.client_port=9003

#IDE
xdebug.idekey=PHPSTORM

# Log
xdebug.log=/var/log/xdebug/xdebug.log

# Если этот параметр равен 1, Xdebug отключит оператор @ (закрытие)
xdebug.scream=1

# Статистика
xdebug.mode = profile
xdebug.output_dir=/var/log/xdebug

# С разумными пределами
xdebug.var_display_max_depth = 10
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024

# Без ограничений
# (максимальная вложенность 1024)
# xdebug.var_display_max_depth = -1
# xdebug.var_display_max_children = -1
# xdebug.var_display_max_data = -1

Xdebug сессия

Обратите внимание на строку xdebug.idekey=PHPSTORM с помощью этого ключа Xdebug будет связываться с IDE PhpStorm. В контексте редактора кода VSCode данный параметр должен иметь следующий вид xdebug.idekey=VSCode.

Так же к настроенному параметру xdebug.idekey следует добавить переменную с названием программы которую вы намереваетесь использовать, для этого в терминале вводим.

BASH
export XDEBUG_SESSION=PHPSTORM

# Или

export XDEBUG_SESSION=VSCode

Переопределение настроек Xdebug в PHP

Так же некоторые настройки могут быть переопределю в PHP коде, например.

BASH
ini_set('xdebug.var_display_max_depth', 10);
ini_set('xdebug.var_display_max_children', 256);
ini_set('xdebug.var_display_max_data', 1024);

Настройка логов

Для того чтобы отслеживать работу Xdebug, необходимо настроить логирование. Именно логи подскажут причину ошибки если вдруг Xdebug у нас не запустится.

Откроем терминал и введем поочереди команды, который создадут файл хранящий логи и дадут ему соответствующие права на чтение/запись.

BASH
sudo mkdir /var/log/xdebug
sudo touch /var/log/xdebug/xdebug.log
sudo chown -R www-data:www-data /var/log/xdebug
sudo chmod -R 775 /var/log/xdebug
sudo chmod 664 /var/log/xdebug/xdebug.log

Установка расширения Xdebug helper в браузер

Следующим шагом в настройке Xbedug будет установка расширения Xdebug helper в браузер. Оно позволит связать страницу сайта в браузере с его кодом в VSCode или PhpStorm.

Переходим на официальную страницу расширения и устанавливаем его.

В настройках расширения Xdebug helper устанавливаем параметр IDE key в PHPSTORM либо VSCode. Затем активируем плагин, включив пункт Debug.

Активация Xdebug
Затем активируем плагин, включив пункт Debug.

Что дальше

Мы проделали большую работу по настройке Xdebug. Остается лишь настроить непосредственно программы PhpStorm или VSCode.

Предыдущая статья Стили кодирования (PHP линтеры) Следующая статья Простой, легкий HTML шаблон без использования gulp сборки