php xdebug踩坑记- xdebug和phpstrom版本不匹配

坑说在先

xdebug:v2.7.2 不能和 phpStrom 2018.2.3 调试PHP

亲测xdebug:v2.6.0可以和phpStrom 2018.2.3 调式成功。

(未验证)不成熟的推测: xdebug:v2.7.* 做了一些改动,和老版本有所不同,不能和一些版本教较老的编辑器联调。
在这里插入图片描述
在这里插入图片描述

问题现象

  • 本地调式模式 、远程调试、gdbp proxy代理模式都不能断点调式php代码
  • cli,web方式php不能调起phpstrom的xdebug
  • phpstrom xdebug等待中, web页面有可能504超时民可能正常获得返回结果

排查过程

本地模式xdebug

此种方式要求php-fpm可以连接到本地端口(因为编辑器一定是使用本地端口)。
php-fpm可以是本机启动的,也可以在本地的docker容器中

代理模式xdebug

DBGP代理工作过程

在这里插入图片描述

安装DBGP代理

git clone git@github.com:gkralik/dbgpproxy.git

以debug模式启动DBGP代理

./dbgpproxy -i 0.0.0.0:9011 -d 0.0.0.0:9022 -l DEBUG

-i 接受编辑器的注册
-d 接收php-fpm的xdebug链接

调试步骤

  1. 下载启动dbgpproxy
  2. 配置phpStrom php>Debug>DBGp Proxy
    在这里插入图片描述
  3. 注册编辑器到dbgpproxy代理
    phpStrom Tools>DBGp Proxy>Register IDE
  4. web 或者 cli 模式触发php xdebug

确定端口是正常能通的

假如9022 是编辑器配置的xdebug端口

tcpdump -i lo0 port 9022
或者 wireshark tcp.port == 9022

DBGP代理debug级别的日志能更直观的体现出来

安装指定版本的php extension扩展包

卸载原xdebug

pecl uninstall xdebug

安装指定版本xdebug

pecl install channel://pecl.php.net/xdebug-2.6.0

pecl install channel://pecl.php.net/{extension-name}-{tag} 安装扩展包的指版本

排查工具

tcpdump 命令行抓包工具 或者 wireshark GUI抓包工具, 不熟悉抓包的更适合用这个
dbgpProxy DBGP代理:https://github.com/gkralik/dbgpproxy
此dbgpProxy需要python3,本地同时存在phthon2和phthon3,编辑脚本以phthon3执行
修改
#!/usr/bin/env python

#!/usr/local/Cellar/python/3.7.4/bin/python3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值