简要说下xDebug在webStrom里面的配置, 我是使用的宝塔+hosts篡改调试url.cn在本地调试url.cn的项目
- 我用的是宝塔, 在宝塔PHP配置里面安装插件xdebug
- 配置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 = PHPSTORMzend_extension=php_xdebug.dll
zend_extension = ext\php_xdebug-2.9.6-7.1-vc14-nts-x86_64.dll -
上面的多的三条配置对应自己的机器上 域名url.cn xdebug调试端口 和 开发工具关键字
-
配置phpstorm: 参考这里 https://blog.csdn.net/uvyoaa/article/details/94628620
-
然后到这一步就可以在浏览器里面输入url.cn/xxxx 启动断点了. 本质上, webstorm启动浏览器的时候就在当前cookie里面注入了一条特征关键字.
-
但是小程序还是不行, 为啥呢, 因为小程序里面的cookie没有发送调试特征关键字.
-
因为我的小程序和服务器之间的通信采用的是JWT 没有使用cookie/session
-
所以客户端需要在cookie里面直接构造一个特征关键字暴露给xdebug拦截器那么xdebug就可以通知webstorm启动调试了.
-
cookie的特征关键字是 XDEBUG_SESSION=XDEBUG_ECLIPSE;
-
所以在你小程序发送http请求的地方做一个 类似 header['cookie'] = 'XDEBUG_SESSION=XDEBUG_ECLIPSE;' 就可以了. 注意我之前是用的JWT所以这里我直接新建一个cookie就完事儿了. 如果你们之前用了cookie则要自己实现cookie增加哈.
-
然后这个加上之后所有走 wx.request() 发出去的请求的cookie就都有"特征关键字" XDEBUG_SESSION=XDEBUG_ECLIPSE;' 服务端就可以正确识别此请求是debug请求.