IIS + EasyWeChat 出现“EasyWeChat.DEBUG: Request received:”

运行 EasyWeChat 的 demo 代码出现:

[2020-08-29 10:27:23] EasyWeChat.DEBUG: Request received: {"method":"GET","uri":"http://xxx.com/xxx/index.php/","content-type":null,"content":""} []
[2020-08-29 10:27:23] EasyWeChat.DEBUG: Server response created: {"content":"success"} []

直接输出了debug日志,反而真正要输出的 success 没有。

之前在别的项目用过EasyWeChat没有这个问题,最近一个新项目出现了这个问题。

新项目没有用框架,而且是IIS服务器;

后来在github找到了这个issue:

https://github.com/overtrue/wechat/issues/1490

按照issue的说法 增加了 log 配置项,结果出现如下报错:

This page contains the following errors:

error on line 1 at column 1: Document is empty

Below is a rendering of the page up to the first error.

这报错风格和内容我是万没想到这是浏览器的报错,不是服务端的。。。

而在开发者工具里面看到的响应是正确的:

而浏览器报错的原因是服务端响应的 Content-Type 是 application/xml

但是响应的内容显然不是xml 所以浏览器报错了。

但是经测试,这并不影响微信服务器的验证。

这里面跟IIS有关的部分是,源码的 send 方法里面有个判断:

这块是处理缓冲区输出的

fastcgi_finish_request 是针对 nginx 的,而 IIS 就走了elseif

而 closeOutputBuffers 里面是用 ob_ 系列函数来处理缓冲区数据,并且实现逻辑较复杂,而且开启了缓冲区也就没有办法用传统的打印输出的方式进行调试,所以我也再没深究这块代码,也就不确定这是故意设计的还是一个bug。。。

(0)

相关推荐