Docker toolbox Xdebug不使用PhpStorm
我尝试了在互联网上找到的所有教程,但仍然无法使用docker工具箱在PhpStorm中使用一个简单的断点 我目前在我的Docker toolbox Xdebug不使用PhpStorm,php,docker,phpstorm,xdebug,Php,Docker,Phpstorm,Xdebug,我尝试了在互联网上找到的所有教程,但仍然无法使用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
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
output):
在我的PhpStorm配置中,我具有以下功能:
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
代理:
调试
PHP解释器
调试配置
服务器配置
模糊的项目是用户名
和项目名称
我在一个项目中有两个文件夹,一个叫做docker
,保存所有docker文件,另一个叫做site
,保存所有站点文件
my 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
给了我很好的响应
有人知道这里发生了什么吗?Xdebug需要打开到PhpStorm的连接。您不需要Docker中公开的端口,也不需要使用Xdebug代理执行任何操作。telnet需要从docker容器到PhpStorm中完成。
xdebug.remote_host
中的IP地址必须是IDE的IP地址,而不是docker容器(HTTP/Apache在端口80上侦听)的IP地址。3 xdebug必须满足与VirtualBox远程工作的条件,尤其是与VirtualBox中的docker相关的条件
1)remote\u connect\u back=1或主机的确切ip地址(可能经常不同)必须列在remote\u host config字段中(,有时两者不能同时工作,特别是在docker与virtualbox=直接在windows hyper-v上分开的情况下)
2)没有其他应用程序可以在端口9000处公开,该端口必须为php编辑器保留,或者其他端口必须由编辑器保留/侦听(或用于php web项目),并从php寻址/传输,这是一种基于项目的配置
3)与第二点类似,VirtualBox必须没有到该端口的端口转发,因为它会有效地占用该端口,但它必须保留给php编辑器,而不是VirtualBox端口转发。并非virtualbox必须在该端口侦听才能转发到某个内部应用程序,但外部php编辑器必须侦听它=该端口同样值得强调的是,它是xdebug.remote\u host还是xdebug.remote\u autostart。在和中都提到了这一点
换句话说,如果您感觉远程主机设置被忽略,请检查远程自动启动是否意外打开。phpstorm是否正在运行和侦听?顶栏,电话。是的,这是一个屏幕截图:
192.168.99.100
它来自哪里?0_o@myxaxa这是我从docker toolbox(windows)提供给我的VM获得的IP。正如我在回答中解释的那样,这是错误的地址。好的,我同意你的看法,但我如何知道我的IDE的IP?这不是网络中的IP,对吗?(现在我的情况是172.16.199.69)?@Robinxdebug.remote\u host=host.docker.internal
试试这个php-i
给我xdebug.remote\u host=>192.168.99.100=>host.docker.internal
现在,但调试仍然不起作用:(连接到virtualbox内部docker将仅适用于web,而不适用于控制台,因为当然web和php编辑器位于不同的位置-在virtualbox外部,而命令行位于virtualbox内部。出于同样的原因,对于此设置,它将不适用于host.docker.internal,因为它指的是docker后面的直接网络,也不适用于docker.for。).mac.host.internal或docker.for.win.localhost,因为在本例中,phpeditor在Virtualbox之外,而docker在里面。XDEBUG_CONFIG env var可能覆盖了connect_back或remote_host中的任何一个,因此它们中的一个似乎有效,反之,versaXDEBUG_CONFIG env var似乎不适用于每个XDEBUG版本/配置