Полный цикл в digital

Xdebug в связке с PhpStorm + XDebug + Docker

Ожидается, что у вас уже есть проект с настроенным докером.

Настраиваем интеграцию PHPStorm с Docker

Идём в:

  1. Settings | Build, Execution, Deployment | Docker
  2. Файл | Настройки | Сборка, выполнение, развертывание | Docker

Создаём максимально простую интеграцию через локальное приложение Docker:

Настраиваем выполнение скриптов через удалённый в контейнере интерпретатор:

Идём в:

  1. Settings | PHP | CLI Interpreter | 3 точки справа от него
  2. Файл | Настройки | PHP | 3 точки справа от него

Добавляем такую конфигурацию:

У меня не проходит валидация установленного пхп, но это ни на что не влияет.

  • Name может быть любым
  • Server выбираем тот, который создали шагом ранее
  • Configuration files: путь до docker-compose.yml

  • Service: контейнер с PHP

  • Остальное на ваш вкус, но в графе Lifecycle лучше оставить connect to existing container

Теперь, в графе CLI интепретатор вы увидите выбранным только что созданный конфиг:

Даём PHPStorm знать о том, как мы обращаемся к серверу

Идём в:

  1. Settings | PHP | Servers
  2. Файл | Настройки | PHP | Серверы

Добавляем новую конфигурацию сервера:

Порт берём из своего конфига сервера. В моём случае он поднят в отдельном контейнере и смотрит наружу через 80 порт.

Тут важно запомнить Name, это пригодится чуть позже.

Донастроим интеграцию PHPStorm с XDebug

Идём в:

  1. Settings | PHP | Debug | XDebug
  2. Файл | Настройки | PHP | Отладка | XDebug

Добавляем порт 9001:

Настроим конфигурацию запуска дебаггера

Идём в:

  1. Run | Edit configurations
  2. Выполнить | Редактировать конфигурацию

Создаём новую конфигурацию на основе PHP Remote Debug:

Здесь Server это как раз Name из пункта #3.

В этом окне Name может быть любым, надо его запомнить, он, опять же, пригодятся чуть позже.

IDE key может быть любым, но Если у вас XDebug 3, то обязательно запоминаем значение.

Донастраиваем docker-compose.yml

В контейнере с PHP для правильной интеграции с XDebug мы должны иметь доступ к локальной машине, то есть хосту:

extra_hosts:
      - "host.docker.internal:host-gateway"

Здесь важна только директива extra_hosts, она обязательна.

Донастраиваем Dockerfile контейнера с PHP

XDebug 3

; функции Xdebug
xdebug.mode=debug
; IP-адрес или имя хоста, к которому Xdebug подключится
xdebug.client_host=host.docker.internal
; порт, к которому Xdebug подключиться
xdebug.client_port=9001
; запускает трассировку функции
xdebug.start_with_request=yes
; название IDE
xdebug.idekey=PHPSTORM
; путь до файла где будут сохранятся логи
xdebug.log="/var/www/html/official/logs/xdebug/xdebug_access.log"
; уровень вывода логов, 10 максимальный
xdebug.log_level=0
; автоматическое определять IP-адрес клиента
xdebug.discover_client_host=true
  • xdebug.idekey указываем IDE key из шага #5
  • xdebug.client_port порт из пункта #4
  • xdebug.client_host указываем true
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг