Панель инструментов Docker Xdebug не работает с PhpStorm - PullRequest
1 голос
/ 21 октября 2019

Я перепробовал все учебники, которые нашел в интернете, и до сих пор не могу использовать простую точку останова в PhpStorm с помощью панели инструментов Docker ...

В настоящее время у меня есть это внутри моего Dockerfile:

# Install xdebug
RUN pecl install xdebug; \
    docker-php-ext-enable xdebug; \
    echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_port=9001" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_host=192.168.99.100" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.idekey=PHPSTORM" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;

Xdebug устанавливается и настраивается правильно (вывод php -i):

xdebug.remote_autostart => On => On
xdebug.remote_connect_back => Off => Off
xdebug.remote_cookie_expire_time => 3600 => 3600
xdebug.remote_enable => On => On
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => 192.168.99.100 => 192.168.99.100
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9001 => 9001
xdebug.remote_timeout => 200 => 200
xdebug.idekey => PHPSTORM => PHPSTORM

В моей конфигурации PhpStorm у меня есть следующее:

Прокси:

DBGp Proxy

Отладка Debug

Интерпретатор PHP PHP interpreter

Отладкаconfig Debug config

Конфигурация сервера Server config

Размытые элементы: Username и project name.

У меня есть 2 папки в проекте, одна называется docker и содержит все файлы Docker, а другая site, которая содержит все файлы сайта.

Конфигурация для моей docker-compose следующая:

version: '3'

services:
  application:
    image: project_image:latest
    environment:
      - C_UID=${C_UID:-1000}
      - C_GID=${G_UID:-1000}
      - DEVELOPMENT=${DEVELOPMENT:-1}
      - ~/.ssh:/var/www/.ssh
      - ~/.composer:/var/www/.composer
    env_file:
      - .env
    volumes:
      - ${APPLICATION:-../site}:/phpapp
    ports:
      - 9001:9001

  nginx:
    image: dockerwest/nginx-laravel:${NGINXVERSION:-stable}
    environment:
      - VIRTUAL_HOST=${BASEHOST:-project_name.docker},${EXTRAHOSTS}
    volumes:
      - ${APPLICATION:-../site}:/phpapp
    links:
      - application
    ports:
      - 80:80

Кто-нибудь знает, что я здесь делаю неправильно?

Когда я пытаюсь де telnet 192.168.99.100 9001, соединение не может быть установлено, порт 9000, ни, но порт 80 гиУ меня хороший ответ.

Кто-нибудь, кто знает, что здесь происходит?

1 Ответ

2 голосов
/ 21 октября 2019

Xdebug должен открыть соединение до PhpStorm. Вам не нужно открывать порты в Docker или делать что-либо с прокси Xdebug. Телнет должен быть сделан из вашего док-контейнера в PhpStorm. IP-адрес в xdebug.remote_host должен быть IP-адресом вашей IDE, а не IP-адресом вашего док-контейнера (где HTTP / Apache прослушивает порт 80).

...