PhpStorm Xdebug
一、背景
使用Xdebug协助代码debug原因无非以下几种:
- 一行行代码echo、var_dump 比较耗时,重复请求
- 查看前辈的复杂的业务代码逻辑追踪比较累
- 想研究追踪分析下YII2 、Lumen等框架源代码
本教程并非重复造轮子
- 网上很多PhpStorm + Xdebug 配置繁杂,望而却步
- 配置debug方式单一,缺乏多种配置方式整理
- 坑太多,往往根据他们的配置走,有时往往不能实现最终效果
二、环境准备
Xdebug扩展安装
方式一:
直接访问Xebug官网:Xdebug: Downloads,进行对应php版本选择下载。
方式二:wizard 自动匹配Xdebug版本
注意:尽量使用Xdebug2.X版本,因为Xdebug3.X版本配置项与2.X有很大差异。以下采用Xdebug2.X.
三、单人调试-几种分类配置
本地调试
即web服务器部署和PhpStorm处于相同机器下:web服务器部署在本地开发机上的虚拟机中
配置调试方式如下:
步骤一:php.ini配置
[xdebug]
zend_extension = xdebug.so
xdebug.remote_host = 192.168.128.243 # PhpStorm所在机器的ip地址
xdebug.remote_port = 9010 # PhpStorm所在机器监听端口号
xdebug.remote_enable = 1 # 必须要开启
xdebug.remote_autostart = 1 # 自动开始远程调试, 如果开启则不用再每个request请求url中加入?XDEBUG_SESSION_START=
xdebug.idekey = PHPSTORM #
xdebug.remote_log = /tmp/xdebug-log
步骤二:PhpStorm Debug端口配置
步骤三:PhpStorm Server代码映射配置
步骤四:浏览器访问:http://192.168.87.55:51100/
远程调试-回访通道可达
web服务器部署在远端服务器,PhpStorm处于windows开发机上。但是远程服务器上的Xdebug可以同PhpStorm 监听的端口进行建立链接。
配置调试方式如下:
步骤同本地调试
远程调试-回访通道不可达
web服务器部署在远端服务器,PhpStorm处于windows开发机上。但是远程服务器上的Xdebug无法同PhpStorm 监听的端口进行建立链接。
[1]Remote debugging via SSH tunnel
配置调试方式如下:
步骤一:php.ini配置
[xdebug]
zend_extension = xdebug_module_goes_here // xdebug.so路径
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1 // 本地ip,因为会通过ssh tunnel建立和PhpStorm所在ip+port连接
xdebug.remote_port=9000 // ssh tunnel 监听的port
步骤二:设置到远程计算机的SSH隧道
原理
- PhpStrom 环境: macOS / Linux:
ssh -R 9010:127.0.0.1:9010 wangyanhao@192.168.87.55
# 将PhpStorm所在ip:127.0.0.1:9010 映射到 web服务器所在ip:192.168.87.55:9010上
- PhpStorm 环境: Windows
# 注意这里一定要在Windows PowerShell中执行
ssh -R 9010:127.0.0.1:9010 wangyanhao@192.168.87.55
步骤三: 浏览器访问:http://192.168.87.55:51100/?XDEBUG_SESSION_START=phpstorm
四、多人调试
原理
意义
启动调试会话时,Xdebug扩展连接到PhpStorm运行的IP地址,需要配置参数: xdebug.remote_host(用于Xdebug 2)或xdebug.client_host(对于Xdebug 3)。
PhpStorm接受这个连接,并可以通过它与Xdebug通信。Xdebug只支持连接到单个IP地址,并且由于安全原因,不会自动连接回运行浏览器的IP地址。
为了在多用户环境中调试PHP应用程序,Xdebug提供了一个所谓的DBGp代理.
【简短来说:其实就是 Xdebug 的 xdebug.remote_host 限制了调试人数,需要下载 DBGp 代理实现多用户调试】
实现方案
直接修改php.ini(不一定好使)
# 直接开启xdebug.remote_connect_back=1 ⾃动记录IDE地址
[xdebug]
zend_extension="xdebug.so"
xdebug.remote_enable=1
xdebug.remote_connect_back=1 # ⾃动记录IDE地址
xdebug.remote_port=9999
xdebug.idekey=PHPSTORM
使用DBGp代理(官网给出的解决方式,有坑)
步骤一:下载安装DBGp
DBGp代理服务安装位置:
条件: 需要web server和开发者机器都可以连接的服务器上
位置: 可以在web server服务器(**这里采用**) / 可以通过SSH tunnel可以连接的单独服务器
下载地址:
https://xdebug.org/download#dbgpProxy
启动DBGp代理:
https://zhuanlan.zhihu.com/p/dbgpProxy -i 192.168.87.55:9010 -s 127.0.0.1:9002
参数解读:
-i : 监听的开发者ide的ip+端口,phpstorm需要连接到该ip+端口
-s : DBGp代理所在服务器的ip+端口
步骤二:web服务上安装并配置了Xdebug 2.X扩展(我这里使用的2.8.1版本)
[xdebug]
zend_extension="<path to xdebug extension>"
xdebug.remote_enable=1
xdebug.remote_host=dbgp_proxy_hostname_or_ip
xdebug.remote_port="<the port (9000 by default) to which Xdebug connects>"
步骤三: 配置从PhpStorm访问DBGp代理服务器的权限
- 进入PhpStorm,菜单栏:Tools-> DBGp Proxy -> Register IDE
- 配置ide key: 注意: 每个开发者唯一标识,用于区别每个xdebug会话
- 连接成功标识:
DBGp日志: 07:35:26.900 [info] [proxyinit] [sishen007-ide-key] Added connection for IDE Key 'sishen007-ide-key': 10.20.100.93:9000
PhpStorm: 提示Xdebug proxy: IDE successfully registered with ide key 'sishen007-ide-key' - 修改配置: 菜单栏:Tools-> DBGp Proxy -> Configuration
- 删除配置: 菜单栏:Tools-> DBGp Proxy -> Cancel IDE Registration
步骤四:PhpStorm中开启监听
点击菜单栏上电话监听按钮开启监听
步骤五:在浏览器中启动调试会话
使用Chrome扩展: https://www.jetbrains.com/help/phpstorm/browser-debugging-extensions.html
配置ide key为自定义ide key
不使用Chrome扩展: 直接在访问的url: http://192.168.87.55:51100/?XDEBUG_SESSION_START=sishen007-ide-key
原因分析: IDE not connected: dial tcp 10.20.100.93:9010: connect: connection refused
看官网距离是web服务器、IDE、DBGp同处于统一网络下。故如果使用远程调试-回访不可达则有问题。
好了,先写到这里吧,有时间再补充下更细致的原理。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/4741.html