此篇文章同时发布在知乎专栏 前端后端客户端,专栏专注于前端、后端、客户端开发的技术分享与探讨,欢迎关注。

这都 9102 年啦,如果还在疯狂 var_dump print 的进行调试,那也太慢了吧。对于开发者而言,趁手的调试器必不可少。

在 PHP 开发环境下,目前有两种流行的调试器:

由于换了新电脑(捂脸),今天就来重温一下 macOS 环境下 Xdebug 的配置。

Xdebug 原理

本质上是一种 C/S 结构。

  • Client:Xdebug 插件
  • Server:IDE
  • 通信协议:DBGp

更加详细的介绍可以前往 官方文档

单人调试

php.ini 中写死了 IDE 的 IP 地址以及监听端口,不支持多用户调试。

With a static IP/single developer

多人调试

无需配置 remote_host,而是配置 xdebug.remote_connect_back=On,Xdebug 会记下来访地址,作为调试时的连接目标。

With an unknown IP/multiple developers

配置步骤

Xdebug

安装

使用 pecl 命令,即可完成当前 PHP 版本对应的 Xdebug 的安装。

1
sudo pecl install xdebug

配置

修改 php.ini,添加如下配置:

1
2
3
4
5
6
7
[xdebug]
xdebug.remote_enable = on # 启用远程调试
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9050 # 监听端口
xdebug.remote_handler = dbgp
xdebug.idekey = PHPSTORM
xdebug.remote_log = /tmp/xdebug.log

修改保存后重启 php-fpm 服务。

PhpStorm

打开 PhpStorm 的配置面板。

配置端口

如图,配置端口号为上述配置的 xdebug.remote_port

配置端口

配置 DBGp Proxy

此处 IDE key 需要与 xdebug.idekey 一致。

Host 与 Port 均为所运行项目的地址与端口。

DBGp Proxy 配置

配置 Servers

与 DBGp Proxy 相同,这里的 Host 和 Port 是所运行项目的地址与端口。

Servers 配置

新增 Run/Debug Configurations

选择新增一个 PHP Web PageServer 下拉框选择刚刚配置的过的 Servers

新增 Configurations

进入调试

PhpStorm 开启监听

将 PhpStorm 右上角的小电话点绿,开始监听,随后点击小爬虫即可进入调试模式。

开启监听

然后在需要的地方打上断点就可以啦~

使用 Postman 请求

那么,如何让 IDE 监听到我们发送的请求呢?

这就需要在请求中带上 cookieXDEBUG_SESSION_START 参数了。

Postman 请求体

其中,XDEBUG_SESSION_START 的值在开启调试后的 Debugger 窗口中可以找到。cookie 所带值需要与 IDE key 相匹配。

参考资料