php容器远程调试指北
部署说明
本机windows,服务器Ubuntu,服务器上跑一个php docker容器,本机使用IDE PhpStorm,需要服务器可以通过ip访问到本机。
本文以一个thinkphp应用为例,本机和服务器上各有一份代码。
容器: 1
docker run -it -p 8000:8000 -p 9003:9003 -v .:/think php:8 /bin/bash
8000是web端口,9003是调试端口
调试配置
容器内安装Xdebug
1 |
|
xdebug安装成功时会回显xdebug.so的路径,待会要写到配置文件里。
创建配置文件
1 |
|
1 |
|
IDE配置
Settings -> PHP
,首先为你的IDE添加一个可用的php解释器,我这里直接用了服务器上的,版本没有严格要求,差不太多就行
然后添加一个服务器,端口是web的端口,添加文件路径映射
PHP -> 调试
,确认一下调试端口是否正确
PHP -> 调试 -> DBGp代理
,填一下IDEKEY和服务器的ip-port,与调试端口一致
最后添加一个PHP远程调试配置,服务器选择之前在设置里添加过的,然后填写IDEKEY
开始debug
IDE里下个断点,用刚才的配置开始调试
到web根目录把服务跑起来: 1
php think run
浏览器发一个能使代码运行到断点处的请求
1 |
|
就能看到断下来了:
失败处理
遇到过一些很抽象的问题......总之如果断不下来,可以尝试如下思路:
重启服务
IDE重新开启调试,以及重启web服务,两边都试试,并且可能受到重启的次序的影响
添加参数
请求里加个get参数:XDEBUG_SESSION_START=PHPSTORM
P.S. 搜索到的文章都写到了这一点,但事实上似乎没加也能断。
如果确定是这个问题,那么你可以安装一个叫Xdebug Helper的浏览器插件,它可以帮你自动化完成这个操作,不需要每次手动加。