【问题标题】:$_POST not containing all input data$_POST 不包含所有输入数据
【发布时间】:2015-07-10 13:31:31
【问题描述】:

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

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

有人有什么想法吗?我尝试编辑php.ini 并将post_max_size 设置为更高的值,但也无济于事。

【问题讨论】:

标签: php html forms post


【解决方案1】:

默认情况下,在较低版本的 PHP($_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);

【讨论】:

  • 我也尝试在 php.ini 中编辑“max_input_vars”,但这也无济于事。我当前的 php 版本是 5.6.9
  • @user2994294 做var_dump(count($_POST, COUNT_RECURSIVE)) 看看你有多少。不妨看看你从哪里开始。
  • 得到输出 int(1165)
  • 好吧,超过 1000 个。让我看看文档,我会回复你。
  • @user2994294 看看我对答案所做的编辑。让我知道它是否有效。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    刚刚解决了,显然我的服务器由于某种奇怪的原因没有更新 max_input_vars。现在我增加了它的价值。

    【讨论】:

    • 考虑接受一个答案,以便人们在未来的类似案例中参考。
    猜你喜欢
    • 2015-01-11
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2021-08-14
    相关资源
    最近更新 更多