在docker下的PHP Xdebug配置

这段时间在研究算法,为了看一些算法的迭代和递归过程需要断点。这里记录下我自己在MAC docker环境下的PHP xdebug配置过程。

配置

这里跳过了安装步骤,因为docker里的xdebug难点不在扩展的安装,而在通信。

PHPxdebug原理

上图是官网上xdebug的工作原理

  • 浏览器,访问web页面服务(http协议request)
  • PHP发起基于DBGP协议的调试请求,访问IDE 9000端口
  • IDE监听端口收到请求后开始同步调试
  • 调试完成返回(http协议的response)
  • 完成一次http会话请求

由此我们可以得出,docker环境不需要为这次xdebug调试工作映射任何容器端口到物理机。但是docker必须知道物理机的IP。物理机的IP写入docker有2种方法

  1. 使用extra_hosts添加主机名映射,但是这种需要结合环境变量达到自动启动的目的(不推荐使用)
1
2
3
4
...
extra_hosts:
- dockerhost:$DOCKERHOST
...

启动需要shell

1
2
3
export DOCKERHOST=$(ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print $2 }' | cut -f2 -d: | head -n1) \
&& docker-compose -f docker-compose.yml up

二. 创建本地回环别名

1
sudo ifconfig lo0 alias 10.0.1.1

mac本地回环

它的作用是创建一个类似127.0.0.1回路的别名

  • lo 回环接口
  • eth0 以太网接口
  • br0 网桥接口
  • wlan0 无线接口

设置完IP或者别名后就需要配置php扩展的debug配置了

1
2
3
4
5
6
7
8
9
10
11
12
php.ini

#远程调试IP
xdebug.remote_host= 10.0.1.1
#请求端口
xdebug.remote_port = 9123
#约定的调试key
xdebug.idekey = PHPSTORM
#日志目录
xdebug.remote_log='/www/xdebug_php7.log'
#开启
xdebug.remote_enable = 1

配置编辑器

直接上图

设置

配置端口

设置key

php.ini配置信息选择一致

编辑调试模式

选择

编辑器的配置基本完成,下面就是测试是否可以正常调试了我们先打上断点

断点debug测试

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~