Docker 工具箱 Xdebug 无法与 PhpStorm 一起使用

Docker toolbox Xdebug not working with PhpStorm

我尝试了我在互联网上找到的所有教程,但仍然无法使用 docker 工具箱在 PhpStorm 中使用简单的断点...

目前我的 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 配置中,我有以下内容:

代理服务器:

调试

PHP 解释器

调试配置

服务器配置

模糊的项目是 Usernameproject 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

有人知道我在这里做错了什么吗?

当我尝试 de telnet 192.168.99.100 9001 时,连接无法建立,端口 9000 也没有,但是端口 80 给了我一个很好的响应。

有人知道这是怎么回事吗?

Xdebug 需要打开一个连接 PhpStorm。您不需要 Docker 中公开的端口,也不需要对 Xdebug 代理做任何事情。 telnet 需要从您的 docker 容器内完成到 PhpStorm。 xdebug.remote_host 中的 IP 地址需要是 IDE 的 IP 地址,而不是 docker 容器的 IP 地址(其中 HTTP/Apache 在端口 80 上侦听)。

xdebug 必须满足 3 个条件才能与 VirtualBox 远程工作,特别是在与 virtualbox 内部的 Docker 相关的情况下。

1) remote_connect_back=1 或主机的确切 IP 地址(可能经常不同)必须在 remote_host 配置中列出字段(有时两者不能同时工作,特别是在 docker 与 virtualbox = 直接在 windows hyper-v 分开的情况下)

2) 没有其他应用程序,例如。 Web 项目可以在端口 9000 公开,必须为 php 编辑器保留,或者 editor/listened 必须保留其他端口(或为 php web project),并且addressed/transmitted从php,是基于项目的配置

3) 与第二点类似,VirtualBox 必须没有端口转发到该端口,因为它会有效占用它但必须保留给 php 编辑器,不适用于 virtualbox 端口转发。不是 virtualbox 必须监听那个端口才能转发到某个内部应用程序,但是外部 php-editor 必须监听它=那个端口

同样值得强调的是,它是 xdebug.remote_host 还是 xdebug.remote_autostart。 the docs and the previous comment.

中都提到了这一点

换句话说 - 如果您感觉 remote_host 设置被忽略,请检查 remote_autostart 是否被意外打开。