docker环境下使用phpstorm进行xdebug调试代码填坑记录

431次阅读
没有评论

共计 1416 个字符,预计需要花费 4 分钟才能阅读完成。

首先,修改 php.ini 文件中的xdebug的配置

[XDebug]
;开启xdebug
xdebug.enable=1
;开启远程调试
xdebug.remote_enable=1
;通讯key
xdebug.idekey=PHPSTORM 
;宿主机ip (docker從18.03開始建議連接到特殊DNS名稱host.docker.internal)
xdebug.remote_host=host.docker.internal ;确定宿主机内此断口没有被占用
xdebug.remote_port=19000
;开启远程连接回调,自动忽略 remote_host 设置,自动读取 $_SERVER['HTTP_X_FORWARDED_FOR'] 或者 $_SERVER['REMOTE_ADDR'] 变量
xdebug.remote_connect_back=1

配置phpstorm

docker环境下使用phpstorm进行xdebug调试代码填坑记录

如上图,phpstorm里面设置红框里面的端口保持和 php.ini 文件的配置一致

docker环境下使用phpstorm进行xdebug调试代码填坑记录

如上图,点击编辑debug配置,如果没有的话添加一个

docker环境下使用phpstorm进行xdebug调试代码填坑记录

如上图,添加一个debug配置,如果没有Server 则点击 3 添加一个,另外需要注意 IDE key session id 必须要和php.ini 里面设置的对应,点击 3 添加一个Server

docker环境下使用phpstorm进行xdebug调试代码填坑记录

如上图,

1,输入需要调试的主机地址

2,输入对应主机的端口

3,勾选 路径映射

4,选择你项目根目录

5,输入docker里面Nginx的文档目录地址

经过上面的设置后,可以开始尝试调试了。

docker环境下使用phpstorm进行xdebug调试代码填坑记录

如上图,新建一个test.php文件

1,在文件左侧鼠标左键点击,打断点

2,选择刚才新建的debug配置

3,点击小绿虫

4,点击上面的电话,图标变成如上图

打开浏览器,访问test.php文件,并带上xdebug调试参数

test.php文件访问地址为:http://localhost:1025/test.php

xdebug调试参数:XDEBUG_SESSION_START=PHPSTORM

完成访问地址如下

http://localhost:1025/test.php?XDEBUG_SESSION_START=PHPSTORM

访问后phpstorm自动进入debug状态

docker环境下使用phpstorm进行xdebug调试代码填坑记录

到此全部设置完成。

遇到的坑:

打开 xdebug.remote_connect_back=1 后遇到一个坑,由于 $_SERVER['REMOTE_ADDR'] 返回的是php-fpm获取到的 $_SERVER['REMOTE_ADDR'] 是 网关IP,通常为 172.17.0.1 造成xdebug 无法连接。

解决办法:

1,执行ping 命令 : ping host.docker.internal ,或者 ipconfig /all 或者其他能获取到IDE运行所在机器的IP

2,修改 Nginx 配置文件 在 location ~ \.php 设置块 增加一个 fastcgi_param remote_addr

完整块设置,可参照设置

location ~ \.php {
        include fastcgi_params;
        fastcgi_pass   php:9000;
        fastcgi_param  RUNTIME_ENVIROMENT development;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param REMOTE_ADDR "192.168.1.100";  #这个是宿主ip,至关重要
    }

正文完
 0
Eric chan
版权声明:本站原创文章,由 Eric chan 于2020-02-15发表,共计1416字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。