今天開發的時候遇到這個問題,我的環境是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;
}
}