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 解释器
调试配置
服务器配置
模糊的项目是 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
有人知道我在这里做错了什么吗?
当我尝试 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 是否被意外打开。
我尝试了我在互联网上找到的所有教程,但仍然无法使用 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 解释器
调试配置
服务器配置
模糊的项目是 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
有人知道我在这里做错了什么吗?
当我尝试 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 是否被意外打开。