解決$GLOBALS[“HTTP_RAW_POST_DATA”]獲取不到數(shù)據(jù)的問題
2018-09-07 12:35:18
15857
解決$GLOBALS[“HTTP_RAW_POST_DATA”]獲取不到數(shù)據(jù)的問題
昨天在微信中公眾號(hào)開發(fā)中使用$GLOBALS["HTTP_RAW_POST_DATA"]來獲取微信公眾平臺(tái)推送過來的post數(shù)據(jù),結(jié)果驚奇的發(fā)現(xiàn)微信號(hào)總是提示“該微信公眾號(hào)暫時(shí)無法提供服務(wù)”,仔細(xì)去檢查代碼,也沒錯(cuò),可就是無法提供服務(wù)。今天又檢查了一把,還是沒有語法錯(cuò)誤,于是乎,我將中間的所有數(shù)據(jù)全部寫到的記事本里去,通過及時(shí)本發(fā)現(xiàn)$GLOBALS["HTTP_RAW_POST_DATA"]獲取的數(shù)據(jù)是空的。經(jīng)過資料查找,終于發(fā)現(xiàn)了解決的套路:
$GLOBALS ["HTTP_RAW_POST_DATA"]跟$_POST,file_get_contents('php://input') 差不多,用$GLOBALS ["HTTP_RAW_POST_DATA"]或file_get_contents('php://input')的情況大多是為了獲取$_POST無法接收的數(shù)據(jù)類型(如XML數(shù)據(jù))
在$GLOBALS ["HTTP_RAW_POST_DATA"]取不到值的情況下可以按以下方式排查:
1.用file_get_contents('php://input')獲取數(shù)據(jù)。如果獲取不到,則可能是數(shù)據(jù)傳輸錯(cuò)誤,對(duì)請求進(jìn)行捉包,分析數(shù)據(jù)。
2.如果file_get_contents('php://input')有數(shù)據(jù)。則查看php.ini配置文件。
找到如下,如果沒開啟則開啟
always_populate_raw_post_data = On
注意:這種處理方式是在php版本較低的時(shí)候,在php-ini中才有的配置,當(dāng)版本升級(jí)到7,或者更高的時(shí)候該機(jī)制就被廢棄掉了。
微信接口$GLOBALS['HTTP_RAW_POST_DATA']接收不到值
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
打印$xml出來,結(jié)果是null
使用的是php7,原因是php7已移除這個(gè)全局變量,改成
$xml = file_get_contents("php://input");
即可
會(huì)員登錄
賬號(hào)登錄還沒有賬號(hào)?立即注冊