Docker Compose и Xdebug не работают в PhpStorm - PullRequest
0 голосов
/ 20 июня 2020

Я пробовал много вещей, пытаясь разрешить Xdebug работать в контейнере Docker. Я связался с этими ресурсами:

Я думаю, проблема либо в том, что я не понимаю, либо в том, что сеанс отладчика не запускается или не распознается. Для сеанса отладчика я также попытался установить расширение браузера, которое устанавливает ie.

. В итоге у меня были как минимум отдельные контейнеры, один как контейнер разработчика с включенным Xdebug.

docker -compose.yml

version: "3"
services:
  production:
    build: .
    ports:
      - "8000:80"
    volumes:
      - .:/var/www/html
  development:
    build: .
    ports:
      - "8080:80"
#      - "10000:80" also not working
    volumes:
      - .:/var/www/html
      - ./dev.php.ini:/usr/local/etc/php/php.ini

Dockerfile

FROM php:7.4.0-apache

RUN pecl install xdebug \
  && docker-php-ext-enable xdebug

dev. php .ini

xdebug.remote_enable=on
xdebug.remote_host=host.docker.internal
xdebug.remote_port=10000
xdebug.idekey=PHPSTORM

localhost: 8080 данные phpinfo

enter image description here

enter image description here

PhpStorm config

введите описание изображения здесь

Есть идеи?

1 Ответ

2 голосов
/ 20 июня 2020

После загрузки моей машины для дальнейшего исследования с комментариями @abestrad и @LazyOne, ничего не меняя, открыв localhost: 8080 внезапно позволил отладке работать, остановившись на точке останова, которую я установил. На самом деле я уже пытался перезапустить приложение Docker Desktop, прежде чем писать вопрос, возможно, в этот момент мои конфигурации были в неправильном состоянии.

Но в конце концов решение было: Перезапуск P C.

Осторожно

Конечно, я пытался открыть его также в частном сеансе браузера, и он больше не работал. Это произошло потому, что специальный cook ie по-прежнему был установлен в обычном хранилище браузера (cook ie, которое было сохранено либо из расширения браузера, которое я уже удалил, либо из-за попытки генератора букмарклетов JetBrains перед написанием вопроса).

Чтобы он работал каждый раз, нужно было добавить следующее:

xdebug.remote_autostart=1

Citate from here :

Обычно вам нужно использовать определенную c переменную HTTP GET / POST для запуска удаленной отладки (см. Пошаговая отладка). Если для этого параметра установлено значение 1, Xdebug всегда будет пытаться запустить сеанс удаленной отладки и попытаться подключиться к клиенту, даже если переменная GET / POST / COOK IE отсутствовала.

...