经验分享:微信支付提示libxml_disable_entity_loader错误的解决办法(php5.3以下会出现这个错误)

系统分类:代码 - PHP代码 - 经验分享 yecha 2016-07-16 23:09:21 上传

版权信息: "经验分享"栏目内,站内会员所分享的全部资料,仅供学习与参考,版权为原作者所有。
yecha加关注
江苏省淮安市 / 设计师
标签:微信支付

详细分析请看下方:


当普通微信用户向公众账号发送消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上,因此消息是以XML格式的数据包发送的。
 1)首先得到xml数据包信息:
    
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
2)然后我们可以看到这个函数中有一个这样的语句:
    
libxml_disable_entity_loader(true);


这个语句直接百度的时候,查到的信息是做安全防御用的:对于PHP,由于simplexml_load_string 函数的XML解析问题出现在libxml库上,所以加载实体前可以调用这样一个函数,所以这一句也应该是考虑到了安全问题。 


3)得到了数据之后,然后我们就是要解析微信服务器发送过来的xml数据包了,这里执行的是:
    
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
从语法来看,应该是对得到的postStr数据进行解析吧,解析之后就得到了我们需要的信息了: 


解决方案:

注释掉     libxml_disable_entity_loader(true);  即可

在 WxPay.Data.php 文件里面!



素材人气
  • 浏览:
  • 收藏:
  • 评论:
  • 推荐:
  • 附件下载:
yecha
江苏省淮安市 / 设计师
2016-07-16 23:09:21发布
全部评论()
全部推荐()