为了账号安全,请及时绑定邮箱和手机立即绑定

关于不推荐使用`$ HTTP_RAW_POST_DATA`的警告

关于不推荐使用`$ HTTP_RAW_POST_DATA`的警告

PHP
繁华开满天机 2019-08-08 16:02:42
关于不推荐使用`$ HTTP_RAW_POST_DATA`的警告我切换到PHP 5.6.0,现在到处都收到以下警告: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. in Unknown on line 0 Warning: Cannot modify header information - headers already sent in Unknown on line 0好吧,我依靠一些不赞成的功能。除了我没有!我没有在任何脚本中使用过这个变量。说实话,我不知道它甚至存在。phpinfo()显示我已always_populate_raw_post_data设置为0(禁用)。那么发生了什么?我不想通过将此值设置为-1来“避免警告”。这只会隐藏警告,我仍然会弃用配置。我想从源头解决问题,并知道为什么PHP认为HTTP_RAW_POST_DATA填充是打开的。
查看完整描述

3 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

事实证明,我对错误信息的理解是错误的。我会说它的选择非常糟糕。谷歌搜索周围显示我其他人误解了消息,就像我一样 - 请参阅PHP bug#66763

完全没有帮助之后“这就是客户经理想要的方式。” Tyrael对这个错误的回应解释说,将它设置为“-1”并不会使警告消失。它做的是正确的,即它完全禁用填充罪魁祸首变量。事实证明,将其设置为0 STILL会在某些情况下填充数据。谈论糟糕的设计!引用PHP RFC

将always_populate_raw_post_data INI设置更改为接受三个值而不是两个。

  • -1:主人的行为; 永远不要填充$ GLOBALS [HTTP_RAW_POST_DATA]

  • 0 / off / whatever:BC行为(如果内容类型未注册或请求方法不是POST,则填充)

  • 1 / on / yes / true:BC行为(总是填充$ GLOBALS [HTTP_RAW_POST_DATA])

所以是的,将它设置为-1不仅可以避免警告,就像消息所说的那样,但它最终也会禁用填充此变量,这就是我想要的。


查看完整回答
反对 回复 2019-08-08
?
长风秋雁

TA贡献1757条经验 获得超7个赞

有一段时间,直到我遇到这个错误。为可能偶然发现这个问题的人提出我的答案。

该错误仅表示您正在发送空POST请求。在没有传递参数的HTTPRequests上常见此错误。要避免此错误,您始终可以在不更改php.ini的情况下向POST添加参数。

喜欢:

$.post(URL_HERE    ,{addedvar : 'anycontent'}
    ,function(d){
       doAnyHere(d);
    }
    ,'json' //or 'html','text');


查看完整回答
反对 回复 2019-08-08
?
阿晨1998

TA贡献2037条经验 获得超6个赞

我在nginx服务器(DigitalOcean)上遇到了同样的问题 - 我所要做的就是登录root并修改文件/etc/php5/fpm/php.ini

要找到always_populate_raw_post_data我第一次运行的行grep

grep -n 'always_populate_raw_post_data' php.ini

那回归了 704

704:;always_populate_raw_post_data = -1

然后只需php.ini使用vi编辑器打开该行:

vi +704 php.ini

删除半冒号以取消注释并保存文件 :wq

最后重启服务器,错误就消失了。


查看完整回答
反对 回复 2019-08-08
  • 3 回答
  • 0 关注
  • 1100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信