Настройка xDebug php Docker — PhpStorm (2021)

Каждый раз когда нужно заняться качественным дебагом, каждый раз вспоминаю, как настроить xdebug. Но в этот раз нужно было настроить его через «внешний» интерпретатор PHP, который находился внутри контейнера Docker.

Контейнер был собран на образе PHP в моем случае был взят образ:

FROM php:7.4.14-apache

А сам xdebug был установлен таким образом:

RUN pecl install xdebug \
    && docker-php-ext-enable xdebug \
    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \

В том числе, нужно было настроить PhpStorm так, чтобы он знал к какому интерпретатору обратиться за данными, который xdebug собрал.
Напомню — он в этом случае не локально, на компьютере, а в Docker контейнере. Поэтому была взята за основу статья, подключение сервера Docker к PhpStorm и  настройка интерпретатора PHP через Docker

В множестве статей с примерами, вне пространства jetbrains.com можно запутаться, т.к авторы иногда забывают указать свою среду разработки, например, на какой операционной системе они все это настраивали.

В моём случае это Windows 10, Docker desktop 3.5.0 версии.

Далее, после того как PhpStorm знает, где интерпретатор (в контейнере) Docker-а, можно двигаться дальше, например настройки в
docker-compose.yml относительно сервиса, в котором работает веб-сервер и PHP дополнительно, добавлена директива:

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

а в настройках php.ini

[Xdebug]
xdebug.mode=debug
xdebug.start_with_request = yes
xdebug.client_host=host.docker.internal
xdebug.client_port=9005
xdebug.idekey="PHPSTORM"
xdebug.discover_client_host = 1

И соответственно порт 9005, или какой-нибудь другой (произвольный, свободный) должен совпадать с настройками, Debug в PhpStorm.

Loading

Настройка xDebug php Docker — PhpStorm (2021): 3 комментария

  1. скажу что все бы сказали прочитав твою статью — НИ ОЧЕМ! ни настройки ни phpstrom конфиги не показал ни как подключить контейнер — вода!

    1. Так это заметки для автора, а не статья для кого-то.
      Но кто-то кроме вас может ещё разобраться.
      Поэтому, сильно не утруждайте себя в оценке статьи.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *