前端时间要搞个微信公众号,由于去年也帮朋友搞过公众号开发。所以觉得应该蛮顺利,但是居然遇到了两个坑,而且百度搜的时候也没有直接的答案。
先说一下,这两个坑是和wnmp版本环境有关,我的wnmp是2.1.9版。
第一个坑:TOKEN验证失败 问题
用wx_sample.php这个例子时是成功的,而稍微修改wx_sample.php文件,如加入记录log等方法后,就一直提示token验证失败。
一开始以为是字符集问题,但却不是。百度搜了,提到了输出有可能有BOM头,也不是。基本上搜到的都是常见问题。
后来终于找到了问题的所在:
if($this->checkSignature()){
ob_clean();//删除内部缓冲区的内容,不关闭缓冲区(不输出)。
echo $echoStr;
exit;
}
这样就好了
第二个坑:$GLOBALS["HTTP_RAW_POST_DATA"]为空,没有数据
这个坑是因为默认配置里关闭了$GLOBALS["HTTP_RAW_POST_DATA"];
只要用file_get_contents("php://input");替换$GLOBALS["HTTP_RAW_POST_DATA"];就ok了