错误$HTTP_RAW_POST_DATA已经被弃用,请使用php://input流代替。

7
在 MAMP 上使用 PHP 5.6.2,将 Laravel 从 4.1 升级到 4.2,在修复一些错误并按照 Laravel 的升级文档进行更改后,我最终遇到了以下错误: "自动填充 $HTTP_RAW_POST_DATA 已过时,并将在未来的版本中被移除。为了避免此警告,请在 php.ini 中将 'always_populate_raw_post_data' 设置为 '-1' 并使用 php://input 流。" 为什么会出现这种情况?我应该在哪里更改代码?我的代码中没有使用 $HTTP_RAW_POST_DATA。 我也根据说明更改了我的 php.ini,但是还是出现同样的错误...我该如何解决?

也许Laravel使用它? - Daan
还有呢?我该怎么办?我刚刚更新了。文档上说:“Laravel 4.2 需要 PHP 5.4.0 或更高版本。” - Shlomo
1
更改php.ini后,您是否重启了Apache/PHP? 您确定更新了正确的php.ini吗? (使用phpinfo()查看所使用的路径)。我从未使用过Laravel,但如果$HTTP_RAW_POST_DATA来自于Laravel,则不应该必须修复框架源中的代码。 - user3849602
是的,我已经重新启动并更改了正确的ini文件。 - Shlomo
这是 Laravel 中的一个 bug,我会给他们发邮件。 - Daan
1
非常感谢你们两个。我仔细检查了一下,发现我的php.ini文件有误。现在它可以正常工作了! - Shlomo
3个回答

4
这个问题的解决方案是编辑正确的 php.ini 文件,然后一切都可以正常工作。

2
我修改了我的php.ini文件,并在phpInfo中反映出来,但每次尝试使用JSON Web Tokens教程中的某个步骤时仍然会出现相同的错误。 - realisation
1
好的回答,但更让人害怕的是:Laravel 5将无法在即将推出的PHP 7上运行吗? - ChristoKiwi
Laravel目前正在PHP7开发版本上运行。 - Reza Shadman
编辑 PHP ini 中的什么内容? - Vítor Oliveira

2
请使用:
Content-Type = application/x-www-form-urlencoded 

为了解决这个问题。

0

打开你的PHP.ini文件,搜索"always_populate_raw_post_data"并将其值设置为-1,例如:

; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is
; to disable this feature and it will be removed in a future version.
; If post reading is disabled through enable_post_data_reading,
; $HTTP_RAW_POST_DATA is *NOT* populated.
; http://php.net/always-populate-raw-post-data
always_populate_raw_post_data = -1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接