в вашей

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

Используемое программное обеспечение и версии:

Ubuntu 16.04 LTS
Docker v 17.06
docker-compose 1.15

Поэтому я много раз пытался настроить xdebug + Docker + PhpStorm, но не могу этого сделать. Я прочитал много уроков, но ничто не помогло мне.

мойdocker-compose.yml выглядит так:

version: '3'
services:
    web:
        image: nginx:latest
        ports:
            - "80:80"
        restart: on-failure
        volumes:
            - "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf"
            - "./etc/ssl:/etc/ssl"
            - "./project:/var/www/html/project"
        depends_on:
            - php
            - db

    php:
        image: nanoninja/php-fpm
        restart: on-failure
        volumes:
            - "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
            - "./project:/var/www/html/project"
    db:
        image: mysql
        container_name: ${MYSQL_HOST}
        restart: on-failure
        env_file:
            - ".env"
        environment:
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
        ports:
            - "8988:3306"
        volumes:
            - "./data/db/mysql:/var/lib/mysql"

мойxdebug.ini является:

xdebug.default_enable=0
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.remote_connect_back=0
xdebug.idekey="PHPSTORM"
xdebug.profiler_enable=0
xdebug.remote_host=localhost

Настройки PhpStorm:

 Tarun Lalwani17 сент. 2017 г., 13:05
Посмотрите, поможет ли этоtarunlalwani.com/post/debugging-php-xdebug-docker
 Sombrero Chicken17 сент. 2017 г., 12:29
Как насчет того, чтобы описать, в чем ваша проблема?
 LazyOne17 сент. 2017 г., 14:44
1) Соберите логи xdebug для такого неудачного сеанса отладки и поделитесь им -xdebug.org/docs/all_settings#remote_log 2) Почемуxdebug.remote_host=localhost если вы запускаете его в Docker? Это должен быть IP-адрес компьютера, на котором работает PhpStorm.

Ответы на вопрос(3)

ост-системе, поэтому вы можете просто установитьxdebug.remote_connect_back=1 и пропуститьxdebug.remote_host в вашейxdebug.ini.

Решение Вопроса

1) Прежде всего нам нужно создать новый статический маршрут, который будет основан на вашем сетевом устройстве. Для создания нового статического маршрута: запустить в терминалеifconfig

и выяснил, существует ли сетевое устройство. В моей ситуации название устройства будет таким

wlp4s0

2) Вперед. Давайте начнем создавать статический маршрут. В терминале запускаем команду вот так:

> sudo ip addr add 10.254.254.254/24 brd + dev wlp4s0 label wlp4s0:1

3) Теперь, если вы снова запуститеifconfig вы увидите новый статический маршрут:

4) Обновление

xdebug.ini

добавление файла:

xdebug.remote_host=10.254.254.254

5) Обновлениеdocker.compose.yml файл: вphp раздел добавить:

environment:
    PHP_IDE_CONFIG: "serverName=project-docker"
    PHP_XDEBUG_ENABLED: 1
    XDEBUG_CONFIG: remote_host=10.254.254.254

6) Последнее, что нужно обновить настройки phpstorm.

Настройки сервера:Конфигурация удаленной отладки:7) И прибыль xdebug работает:

 LazyOne17 сент. 2017 г., 16:32
Выфактически DBGp Proxy установлен и работает? Это отдельная вещь, которую вам нужно установить и настроить отдельно. Если вы этого не сделаете (что используется очень редко .. и просто не требуется для локальной работы одного разработчика) - удалите эту часть, чтобы избежать путаницы / введения в заблуждение других пользователей с аналогичными проблемами.
 Rider_BY17 сент. 2017 г., 16:37
Да. Ты был прав. DBGP Proxy Я не установил прокси.

что вы сделали все остальные шаги. Я вижу проблему здесь. Вы не слушаете порт. просто нажмите наStart listening Вот:Preference/Languages & Frameworks/PHP/Debug -> Pre-configuration 3.****** Start listening.

Также добавьте это в ваш образ докера:

    extra_hosts:
      - "phpstorm:${PHPSTORM_HOST_IP}"

Тогда это все. Попробуйте, дайте мне знать.

Ваш ответ на вопрос