【问题标题】:PHP $_POST missing field when too much dataPHP $_POST 数据过多时缺少字段
【发布时间】:2013-11-12 22:54:33
【问题描述】:

我正在使用jQuery.post,其中一个字段是一个大字符串。它可能是 2MB 的文本。

jQuery.post 请求正常通过,但 PHP 的 $_POST 数组中不存在该字段。 所有其他发布的字段都很好。肯定是发送的,实际上在file_get_contents("php://input")

如果我减小大字符串的大小,它会再次出现在$_POST 数据中。

我怎样才能取消这个字段大小限制,以便 PHP 将大字段推送到 $_POST

编辑:我将post_max_size 更改为100M,但没有任何改变。

【问题讨论】:

  • 大约 1048576 个字符! (2 字节字符)。这听起来像是服务器设置问题。你的帖子价值到底了吗?
  • 默认post_max_size是8MB,所以可能和PHP的配置无关...

标签: php ajax forms post


【解决方案1】:

试试 Increasing the maximum post size 或者检查服务器是否没有任何额外的限制机制,比如 http://www.hardened-php.net/suhosin/

检查您的 phpinfo() 并查找任何与帖子相关的限制

【讨论】:

  • 我认为您对 suhosin 的看法是正确的。我有suhosin.post.max_value_length 1000000,小于 1MB。我在通过 htaccess 更改它时遇到了麻烦。
  • 根据我对suhosin 的“经验”的记忆,这个变量可以t be overwritten from .htaccess`。也许这会有所帮助stackoverflow.com/questions/12718609/…
  • 大声笑,这是一种黑客行为,对性能非常不利。我不敢相信这个答案被接受了......我发现有一个suhosin.ini,我改变了它,一切都很好。
  • 我没有说它是一个完美的解决方案,你也没有说你可以访问配置文件。
  • Suhosin 似乎对可以在单个表单中提交的表单元素(或 POST 变量)的数量进行了限制。见mou.me.uk/2012/08/20/…diywpblog.com/how-to-increase-max-input-vars
【解决方案2】:

这是一个服务器配置。如果您在 Linux 或类似环境下使用 PHP,您可以使用 .htaccess 来控制这些,如下所示:

#set max post size
php_value post_max_size 20M

来自What is the size limit of a post request?

【讨论】:

    【解决方案3】:

    为了记录,还有其他可能导致丢失帖子数据的选项, 一个是max_input_vars,它定义了请求中允许的发布变量的数量。默认情况下它设置为一个非常高的值(1000),但在某些情况下,您可能想要增加这个数字。

    还有max_input_nesting_level,这也可能是你有许多嵌套变量的原因(这个默认是64)

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 2011-07-01
      • 2017-02-14
      • 1970-01-01
      • 2016-04-04
      相关资源
      最近更新 更多