![5bbf02efb4a619afe63fa6d2d924e05b.png](https://i-blog.csdnimg.cn/blog_migrate/d63a1d59fa4f555caf1bb680b1f77614.jpeg)
这都 9102 年啦,如果还在疯狂 var_dump
print
的进行调试,那也太慢了吧。对于开发者而言,趁手的调试器必不可少。
在 PHP 开发环境下,目前有两种流行的调试器:
- Xdebug
- Zend Debugger
由于换了新电脑(捂脸),今天就来重温一下 macOS 环境下 Xdebug 的配置。
Xdebug 原理
本质上是一种 C/S 结构。
- Client:Xdebug 插件
- Server:IDE
- 通信协议:DBGp
更加详细的介绍可以前往 官方文档。
单人调试
在 php.ini
中写死了 IDE 的 IP 地址以及监听端口,不支持多用户调试。
![8855a43f3dcee95acb5a6e3c8053e6a9.gif](https://i-blog.csdnimg.cn/blog_migrate/a1c7d3de0417c3dcf389c51b5306edbf.gif)
多人调试
无需配置 remote_host
,而是配置 xdebug.remote_connect_back=On
,Xdebug 会记下来访地址,作为调试时的连接目标。
![5627f0254f600b8d1ed5b9612fd9b4be.gif](https://i-blog.csdnimg.cn/blog_migrate/60b37fab89483bc91a92bede81f509a6.gif)
配置步骤
Xdebug
安装
使用 pecl
命令,即可完成当前 PHP 版本对应的 Xdebug 的安装。
sudo pecl install xdebug
配置
修改 php.ini
,添加如下配置:
[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
。
![15c8ea0f106cab5f9f6645b4d3b04e1e.png](https://i-blog.csdnimg.cn/blog_migrate/acf8ccdfaa3276c8f1634158f20d5e76.jpeg)
配置 DBGp Proxy
此处 IDE key
需要与 xdebug.idekey
一致。
Host 与 Port 均为所运行项目的地址与端口。
![e089a4f2c640bcee7720883045ce1278.png](https://i-blog.csdnimg.cn/blog_migrate/32ea675a6d7d32cf2f025967ad9da37c.jpeg)
配置 Servers
与 DBGp Proxy 相同,这里的 Host 和 Port 是所运行项目的地址与端口。
![3436a7d6cf450597d4f8bd118798554f.png](https://i-blog.csdnimg.cn/blog_migrate/6105d94f2ce225ea6ed18bfb2e15a980.jpeg)
新增 Run/Debug Configurations
选择新增一个 PHP Web Page
,Server
下拉框选择刚刚配置的过的 Servers
。
![b3a7c78bc71ecf4b590b4abb49e882d2.png](https://i-blog.csdnimg.cn/blog_migrate/ce25e04fd32320b70d760ad06b0127df.jpeg)
进入调试
PhpStorm 开启监听
将 PhpStorm 右上角的小电话点绿,开始监听,随后点击小爬虫即可进入调试模式。
![ba33362b16ca512bdbba31392525a8a8.png](https://i-blog.csdnimg.cn/blog_migrate/ea1efb8c2d82b6d5273ee325adab85d7.png)
然后在需要的地方打上断点就可以啦~
使用 Postman 请求
那么,如何让 IDE 监听到我们发送的请求呢?
这就需要在请求中带上 cookie
与 XDEBUG_SESSION_START
参数了。
![00aed1af01a4189d4905ac370c50f8e3.png](https://i-blog.csdnimg.cn/blog_migrate/6229cf236c18f6d72979616030c669dc.jpeg)
其中,XDEBUG_SESSION_START
的值在开启调试后的 Debugger 窗口中可以找到。cookie
所带值需要与 IDE key
相匹配。