之前在接觸的項目中,微信支付回調函數都是使用以下變量獲取POST數據:
前提:php配置中,必須啟用 always_populate_raw_post_data
//php.ini 配置
always_populate_raw_post_data = On
//適用於PHP版本:PHP 5 及之前
//獲取POST數據
$xml = $GLOBALS[
'HTTP_RAW_POST_DATA'];
由於之前的項目PHP版本為:php<7.0,所以使用 $GLOBALS['HTTP_RAW_POST_DATA'] 還是OK的;
項目PHP版本升級到7.0之後的版本,微信支付回調使用上面的方法 ,獲取不到數據,需要使用:
//適用於PHP 7 之後
$xml = file_get_contents(
"php://input");
原因是PHP 7版本中已經移除了這個全局變量:'HTTP_RAW_POST_DATA',用 php://input 替代,使用 always_populate_raw_post_data 會導致在填充 $HTTP_RAW_POST_DATA 時產生 E_DEPRECATED 錯誤。
[文章來源](https://blog.csdn.net/levent_007/article/details/80543552)