php报错日志:PHP Deprecated:Automatically populating $HTTP_RAW_POST_DATA is deprecated

时间:2023-03-09 07:48:12
php报错日志:PHP Deprecated:Automatically populating $HTTP_RAW_POST_DATA is deprecated

前几天将线上php服务升级到5.6.x版本后,php-error.log报出错误:
PHP Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated

原因:
上面的报错意思是“自动变量$HTTP_RAW_POST_DATA已过时(deprecated)”
这个问题和PHP版本有关系,PHP5.6之后的高版本都已废弃了$HTTP_RAW_POST_DATA这个全局变量设置,可以使用 php://input 替代 $HTTP_RAW_POST_DATA。
使用always_populate_raw_post_data会导致在填充$HTTP_RAW_POST_DATA时产生E_DEPRECATED 错误。
设置always_populate_raw_post_data 为-1来体验新的行为,因为这样会强制 $HTTP_RAW_POST_DATA 未定义,所以也不会导致 E_DEPRECATED的错误) 来体验新的行为。

解决方法:
修改php.ini配置文件:
[root@dev-new-test etc]# vim php.ini
........
; Always populate the $HTTP_RAW_POST_DATA variable.
;always_populate_raw_post_data = On
always_populate_raw_post_data = -1
.......

然后重启php服务即可!