最近做了一个程序,部署在 SAE 上,环境是 PHP 5.6。
今天看了一下 SAE 上的日志,debug 中上万条日志提示:
PHP Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead.
因为我这个程序是和微信公众号对接的,微信会把消息体以 XML 的结构 POST 到我这边,所以我现在使用 file_get_contents('php://input')
来获取消息。
不知道是不是我对这条 debug 理解有问题,说的应该是推荐用 php://input
吧?但怎么还每一次都有警告呢?
难道 5.6 之后不推荐这个方式了?那用什么方式来代替呢?谢谢~
mattab 评论道 on Oct 19 2014
由于这个警告,我们的构建失败了5.6。
这很烦人,我在网上找到很多人的问题。
我不知道正确的方法来解决这个问题。我们的代码中的搜索显示我们不使用
$HTTP_RAW_POST_DATA
。也许我们真的需要编辑
php.ini
和设置always_populate_raw_post_data
来-1
?(在这种情况下,我们必须添加系统检查以检查用户设置为-1)。php.ini 中设置
always_populate_raw_post_data = Off 这样子不行 非要设置为 -1
也可以看看:
http://stackoverflow.com/questions/26261001/warning-about-http-raw-post-data-being-deprecated
错误报告:https : //bugs.php.net/bug.php?id=66763