【问题标题】:Why is POST data truncated by PHP?为什么 POST 数据会被 PHP 截断?
【发布时间】:2016-04-18 15:57:03
【问题描述】:

我有一个很大的表格,里面有很多很多的项目。升级到 PHP 7 后,在新环境中,某些 POST 元素不会被服务器接收。 $_POST 数组不为空,它包含许多元素,但缺少 $_POST 数组末尾的一些元素。

没有错误信息出现。

在php.ini 中增加post_max_size(从 8M 到 128M)没有帮助。数据结构本身并不算大,不到400k,所以应该不是这个原因。

为什么会这样?

【问题讨论】:

  • 定义many-many items
  • @CharlotteDunois 大约是 2000 年。确切的数字在提问时并不相关,关键是它超过 1000。:)
  • many-many 没有定义,也不意味着比 X 更多。直接输入数字而不是使用模糊的术语会更有效率。但是,嗯,这是差不多两年前的问题了。

标签: php arrays post truncate missing-data


【解决方案1】:

自 PHP 5.3.9 起。存在一个名为 max_input_vars 的新 php.ini 设置。它从接收到的数据中确定可以使用多少项。默认为 1000,这意味着仅使用 $_POST 中的前 1000 个项目。

因此,如果增加 post_max_size 没有帮助,请尝试将 max_input_vars 从 1000 增加到 5000 或您需要的任何值。

更多信息:PHP Manual for max_input_vars

【讨论】:

  • imo,这值得一看。它可能已设置为高于先前版本 PHP.INI 文件中的默认值,并且尚未在 PHP7 ini.file 中增加。不知道为什么需要投反对票。
  • 我也不同意投反对票。是的,$_POST 中的项目太多并不好,但如果您必须在您或其他人的遗留代码下升级 PHP 版本,那么您不一定有足够的资源来现代化代码结构。只需考虑重新测试的时间要求和失败的潜在后果。
猜你喜欢
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多