今天开发的时候遇到这个问题,我的环境是php7.3的,在$GLOBALS["HTTP_RAW_POST_DATA"]
这个代码前面打印没有问题,在其后面打印日志发现没有打印成功,想到可能是这个问题,从网上搜了一下,发现是由于php版本的原因,php5.6以上废了这个函数,如果要使用,直接使用file_get_contents('php://input')
就可以了,
一个完整的方法代码如下
public function responseMsg()
{
$postStr = file_get_contents('php://input'); //此处将之前的$GLOBALS["HTTP_RAW_POST_DATA"]改过来的
if (!empty($postStr)){
libxml_disable_entity_loader(true);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = trim($postObj->MsgType);
switch ($RX_TYPE)
{
case "text":
$resultStr = $this->receiveText($postObj);
unset($postStr,$postObj,$RX_TYPE);
break;
case "event":
$resultStr = $this->receiveEvent($postObj);
unset($postStr,$postObj,$RX_TYPE);
break;
default:
$resultStr = "";
unset($postStr,$postObj,$RX_TYPE);
break;
}
echo $resultStr;
}else {
echo "";
exit;
}
}