最大POST数据限制

时间:2013-05-02 10:21:26

标签: php post

我遇到了这个问题:表格的操作页面上并非所有POST数据都是从浏览器发送的。

我需要知道:

  • 原因是什么?
  • 如何控制原因?
  • 如何解决此问题?

操作页面不会返回任何错误(即使我set error_reporting(E_ALL);)。服务器是Linux。表单的输入很多,有些是最大级别为两个嵌套键的数组(array[1][2])。

我尝试发送较少的输入并且它可以工作,但我需要使用页面中的所有输入。

我打印了表单操作页面收到的所有POST数据,最后一个输入不在$_POST变量中。

3 个答案:

答案 0 :(得分:5)

  
      
  • 原因是什么?
  •   

原因通常是PHP配置。但是,HTTP请求也可能被破坏或者Web服务器配置错误。

  
      
  • 如何控制原因?
  •   

您可以使用PHP配置控制配置。对于网络服务器也是如此。对于损坏的请求,您需要检查网络是否正常,但您无法始终控制它,因为通常您无法控制整个网络。所以你只能照顾你控制的部分。

  
      
  • 如何解决此问题?
  •   

最好的方法是首先找出哪些部分不会影响这一点。这意味着你首先应该排除网络问题(请问请问好吗?你可以用网络嗅探器进行验证)。

下一步是确保网络服务器正常运行。大多数网络服务器都会为您提供帮助,请查看您在此处使用的产品文档以供选择。

例如,如果您正在使用Apache,则可以设置LimitRequestBody,或者如果您已安装安全模块,请设置这些模块。

如果您确定实际上PHP导致了问题:

就PHP配置而言,配置概述并记录在PHP手册中。你应该从

开始

以下选项通常是相关的。所有内容都只需要设置在php.ini.htaccess中(使用ini_set()无效):

这些是一些常见的罪魁祸首,但我无法概述可能发挥作用的所有配置设置。如果您的数据损坏,其中许多core php.ini directives都可以应用。请特别检查那里的 HTTP Data 部分。

非常重要的是 - 当您输入处理时 - 您需要记录错误。当数据进入PHP并且它被破坏时,这些错误只能记录到磁盘 - 不显示。因此,您需要启用错误日志记录并按照错误日志进行操作。有关 PHP错误处理的相关配置,请参阅PHP手册中的其他部分:

答案 1 :(得分:0)

如果您有权访问php.ini,请检查post_max_size参数是否足以满足您的输入。

答案 2 :(得分:0)

您可以通过TEMPORARILY将此添加到您的PHP代码来检查它是否是真正的内存问题:

ini_set('memory_limit', '-1');

这将允许您的脚本使用可用的最大内存量。

如果您发现问题与内存有关,则可以使用相同的代码调整所需内存块的大小,但将“-1”替换为内存要求。