PHP配合WebStorm的xDebug调试小程序http请求在PHP里面加断点的原理分析

简要说下xDebug在webStrom里面的配置, 我是使用的宝塔+hosts篡改调试url.cn在本地调试url.cn的项目

  1. 我用的是宝塔, 在宝塔PHP配置里面安装插件xdebug
  2. 配置php.ini里面的xdebug配置项加入:

    [XDebug]
    xdebug.profiler_append = 0
    xdebug.profiler_enable = 1
    xdebug.profiler_enable_trigger = 0
    xdebug.profiler_output_dir ="D:\BtSoft\temp\xdebug"
    xdebug.trace_output_dir ="D:\BtSoft\temp\xdebug"
    xdebug.profiler_output_name = "cache.out.%t-%s"
    xdebug.remote_enable = 1
    xdebug.remote_handler = "dbgp"
    xdebug.remote_host = "url.cn"

    xdebug.remote_port = 9010
    xdebug.idekey = PHPSTORM

    zend_extension=php_xdebug.dll
    zend_extension = ext\php_xdebug-2.9.6-7.1-vc14-nts-x86_64.dll

  3. 上面的多的三条配置对应自己的机器上 域名url.cn xdebug调试端口 和 开发工具关键字

  4. 配置phpstorm:  参考这里 https://blog.csdn.net/uvyoaa/article/details/94628620

  5. 然后到这一步就可以在浏览器里面输入url.cn/xxxx 启动断点了. 本质上, webstorm启动浏览器的时候就在当前cookie里面注入了一条特征关键字.

  6. 但是小程序还是不行, 为啥呢, 因为小程序里面的cookie没有发送调试特征关键字.

  7. 因为我的小程序和服务器之间的通信采用的是JWT 没有使用cookie/session

  8. 所以客户端需要在cookie里面直接构造一个特征关键字暴露给xdebug拦截器那么xdebug就可以通知webstorm启动调试了.

  9. cookie的特征关键字是 XDEBUG_SESSION=XDEBUG_ECLIPSE;

  10. 所以在你小程序发送http请求的地方做一个 类似 header['cookie'] = 'XDEBUG_SESSION=XDEBUG_ECLIPSE;' 就可以了. 注意我之前是用的JWT所以这里我直接新建一个cookie就完事儿了. 如果你们之前用了cookie则要自己实现cookie增加哈.

  11. 然后这个加上之后所有走 wx.request() 发出去的请求的cookie就都有"特征关键字" XDEBUG_SESSION=XDEBUG_ECLIPSE;' 服务端就可以正确识别此请求是debug请求.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AKULAKK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值