帮助文档>数据库类 > 解决$GLOBALS[“HTTP_RAW_POST_DATA”]

解决$GLOBALS[“HTTP_RAW_POST_DATA”]

发布时间:2021-12-20 08:17

解决$GLOBALS[“HTTP_RAW_POST_DATA”]获取不到数据的问题

昨天在微信中公众号开发中使用$GLOBALS["HTTP_RAW_POST_DATA"]来获取微信公众平台推送过来的post数据,结果惊奇的发现微信号总是提示“该微信公众号暂时无法提供服务”,仔细去检查代码,也没错,可就是无法提供服务。今天又检查了一把,还是没有语法错误,于是乎,我将中间的所有数据全部写到的记事本里去,通过及时本发现$GLOBALS["HTTP_RAW_POST_DATA"]获取的数据是空的。经过资料查找,终于发现了解决的套路:

 

  $GLOBALS ["HTTP_RAW_POST_DATA"]跟$_POST,file_get_contents('php://input')  差不多,用$GLOBALS ["HTTP_RAW_POST_DATA"]或file_get_contents('php://input')的情况大多是为了获取$_POST无法接收的数据类型(如XML数据)

  在$GLOBALS ["HTTP_RAW_POST_DATA"]取不到值的情况下可以按以下方式排查:
     1.用file_get_contents('php://input')获取数据。如果获取不到,则可能是数据传输错误,对请求进行捉包,分析数据。
     2.如果file_get_contents('php://input')有数据。则查看php.ini配置文件。
  找到如下,如果没开启则开启

always_populate_raw_post_data = On

注意:这种处理方式是在php版本较低的时候,在php-ini中才有的配置,当版本升级到7,或者更高的时候该机制就被废弃掉了。


微信接口$GLOBALS['HTTP_RAW_POST_DATA']接收不到值

$xml = $GLOBALS['HTTP_RAW_POST_DATA'];

打印$xml出来,结果是null

 

使用的是php7,原因是php7已移除这个全局变量,改成

$xml = file_get_contents("php://input");

即可

本文导读

客户热线:037125966675

客户服务中心
云产品 服务器 合 作                  Skype