$ _POST不包含所有输入数据

时间:2015-07-10 13:31:32

标签: php html forms post

我尝试使用POST方法通过php发布大型表单。我的表单发布脚本一直运行良好,直到现在$_POST数组变得非常大。

当我打印出file_get_contents ('php://input');时,会显示表单中包含的所有输入。但是当我打印出$_POST时,它只会获得表单的第一部分。我尝试删除行,然后$_POST方法再次正常工作。一旦它变得太大,它就不会发布表格中包含的所有数据。

有人有任何想法吗?我已尝试修改php.ini并将post_max_size设置为更高的值,但它也没有任何帮助。

3 个答案:

答案 0 :(得分:3)

默认情况下,在较低版本的PHP(< 5.3.9)中,$_POST变量的数量限制为1000.无法更改。

在更高版本中,您可以将max_input_vars设置为您想要的任何数字。

如果你低于5.3.9,你可以做一些解决方法。例如json_encode变量并将它们作为单个变量发送。 $_POST的限制默认设置为8mb,但可以在php.ini文件post_max_size="whatever_size_you_wish_here"中更改。

如何增加$_POST中的变量数量:

2个选项:

    您在.htaccess文件中的
  • 执行php_value max_input_vars 2000(or whatever)

  • 在您使用ini_set('max_input_vars', 2000);

  • 的文件中

答案 1 :(得分:1)

尝试转储phpinfo()并查找max_input_vars。如果它在那里,您可以在php.ini中将其设置为更高的数字,如您所见。如果您没有看到它,很可能您没有收到该确切的补丁,并且该号码已被您的发行版硬编码。

答案 2 :(得分:1)

刚刚解决了,显然我的服务器因为某些奇怪的原因没有更新max_input_vars。现在我增加了这个价值,它正在发挥作用。