其实算是很早就应该记录的内容,一直被我拖着了
PHPStorm 本地 Debug 配置
文章内容主要摘自 oatmeal 师傅的博客 https://oatmeal.vip/tools/phpstudyphpstormxdebug/
XDebug 是如何工作的?
IDE 结合 XDebug 调试原理
- IDE 行为:打开本地端口(XDebug 2.X 默认为 9000,3.X 默认为 9003)进行监听;同时做好路径映射,将本地的项目与远程服务器的项目目录做一一映射。
- 浏览器行为:向服务器发起请求,Headers 中带上
Cookie:XDEBUG_SESSION=IDEKEY
- 服务器行为:检测到 Cookie,挂起PHP解释器,等待进一步请求;同时获取请求的来源地址,发起对对方端口(此端口与监听端口一致)的访问,建立调试连接。
- IDE 行为:发现有调试连接建立,判断
XDEBUG_SESSION
是否为预设的 IDE key,如果是,双方协商,进入调试状态。
为什么 Debug 这么难?
习惯了 Pycharm 和 CLion 的直接虫子 Debug,可能对 PHP 为何如此难用 Debug 感到困惑,这里借了Clang 佬的一张图(来自某年 XMAN):
可以看到整个流程中存在三方角色:本地的负责调试客户端的 PhpStrom,提交请求触发调试的浏览器(例如 Chrome)以及安装了 XDebug 等待被调试 PHP 服务器 Apache/Nginx 等(这部分在 Windows 下使用 PHPStudy 实现)。三者都存在于本机中,于是会使人产生了在本地调试的错觉。其中最大的区别是 php 解析器是被 apache/nginx 等中间件调用,phpstorm 需要经过中间件与调试的 php 代码进行通信,本质上是一种远程调试,而 XDebug 就是实现的插件。
XDebug 下载与配置
这里 PHPStudy 其实已经带有了 XDebug,所以在 PHPStudy 里面去做
在 php.ini 里面配置 xdebug 的内容
1 | [Xdebug] |
然后重启服务器,访问 phpinfo,可以看到已经有 Xdebug 了。
PHPStorm 开启监听
PhpStorm 的配置不用做太大的变化,默认也是开启了 Debug 的,匹配一下端口就行了。
设置监听的服务器信息
Debug → DBGp Proxy,这里是设置 IDE key 以及监听 host 和 port 信息的,这里注意和 php.ini
的属性保持一致即可。
再配置 Web Page
点击上面那只小虫子,是一个打电话的形式,这就开启了监听。
配置 xdebug helper 插件
这样子的话,就可以直接在开启监听的情况下,通过插件来做调试的开启与否。
- 本文标题:PHPStorm 本地 Debug 配置
- 创建时间:2023-07-19 14:24:11
- 本文链接:2023/07/19/PHPStorm-本地-Debug-配置/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!