我切换到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(禁用) . 那么发生了什么?
我还没有弃用配置't want to 2821243 by setting this value to -1. This will just hide the warning, and I' . 我想从源头解决问题,并知道为什么PHP认为 HTTP_RAW_POST_DATA
populating已打开 .
9 回答
事实证明,我对错误信息的理解是错误的 . 我会说它的选择非常糟糕 . 谷歌搜索我,其他人误解了这个消息,就像我一样 - 见PHP bug #66763 .
在对Mike的那个错误做出完全无益的回应之后,Tyrael解释说,将它设置为"-1"并不会让警告消失 . 它做的是正确的,即它完全禁用填充罪魁祸首变量 . 事实证明,在某些情况下将其设置为0 STILL 会填充数据 . 谈论糟糕的设计!引用PHP RFC:
所以是的,将它设置为-1不仅可以避免警告,就像消息所说的那样,但它最终也会禁用填充此变量,这就是我想要的 .
我在nginx服务器(DigitalOcean)上遇到了同样的问题 - 我所要做的就是以
root
登录并修改文件/etc/php5/fpm/php.ini
.要找到
always_populate_raw_post_data
的行,我首先运行grep
:那返回了
704
然后使用
vi
编辑器在该行上打开php.ini
:删除半冒号以取消注释并保存文件
:wq
最后重启服务器,错误就消失了 .
有一段时间,直到我遇到这个错误 . 为可能偶然发现这个问题的人提出我的答案 .
该错误仅表示您正在发送空POST请求 . 在没有传递参数的HTTPRequests上常见此错误 . 要避免此错误,您始终可以在不更改php.ini的情况下向POST添加参数 .
喜欢:
您应该在
php.ini
中添加或取消注释属性always_populate_raw_post_data
并将其值设置为-1
. 在我的情况下php.ini
位于:C:\wamp64\bin\php\php5.6.25\php.ini
最后重启WAMP(或点击重启所有服务)
取消注释
在php.ini(第#703行)并重新启动APACHE服务帮我摆脱了消息
如果
.htaccess
文件不可用,则在根文件夹上创建它并超过此行代码 .把它放在
.htaccess
文件中(经测试适用于API)对于仍然在更改php.init之后仍然遇到此问题的人,如接受的答案所示 . 由于在没有任何参数的情况下通过
POST
进行ajax请求时发生错误,您只需将发送方法更改为GET
.如果你想因任何原因保留方法
POST
,还有另一个选择是将空的JSON对象添加到ajax petititon .从html表单发送数据时我收到此错误消息(Post方法) . 我所要做的就是将表单中的编码从“text / plain”更改为“application / x-www-form-urlencoded”或“multipart / form-data” . 错误消息非常误导 .
; php.init中的always_populate_raw_post_data = -1删除此行的注释.. always_populate_raw_post_data = -1