请求的实体太大

时间:2012-01-17 14:50:09

标签: configuration web-hosting php

我收到此消息,

Request Entity Too Large
The requested resource
/index.php
does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit. 

我设置

php_value post_max_size 50M
php_value upload_max_filesize 50M

.htaccess但没有帮助

如何克服这个?

由于

5 个答案:

答案 0 :(得分:12)

在您完成PHP的memory_limitpost_max_sizeupload_max_filesize之后,我想向您推荐一些与该主题相关的文章,其中一篇可能会解决问题。

我在服务器故障上找到了这篇文章:
https://serverfault.com/questions/79741/php-apache-post-limit/79745#79745

  • sybreon 建议仔细检查Content-Length,并引用 - “确保您直接连接到Apache,而不是通过代理或反向代理。一些反向代理会对请求的最大大小设置上限作为一种安全措施。因此,您可能需要检查该日志以及Apache日志,以确保没有其他任何事情发生。“< / em>

  • sybreon也发布了这个链接:Apache 413 error problems
    以下内容仅适用于如果您在Apache中启用了mod_ssl模块。 (否则此设置可能导致服务器崩溃。)
    引用文章:
    “我使用的是Apache SSL客户端证书,其限制为128K,如果必须重新协商,则更大的POST将失败。
    This Bugzilla posting有线索 - 您必须将以下内容设置为SSL服务器的默认值,而不仅仅是目录。

    SSLVerifyClient require
    

    否则会强制进行某种重新协商,并因413错误而失败。“

  • 上一篇文章还提到了LimitRequestBody指令 A guy says here that the appropriate setting of this directive solved his problem.

我希望其中一个设置可以解决这个问题!

答案 1 :(得分:9)

对我来说唯一有用的就是调整SSL缓冲区大小。你可以通过......设置它。

<Directory /my/blah/blah>
...
  # Set this to something big...
  SSLRenegBufferSize 10486000
...
</Directory>

...然后只需重启Apache即可使更改生效。 (发现于:http://forum.joomla.org/viewtopic.php?p=2085574

答案 2 :(得分:4)

我的服务器是Apache。是mod_security模块,它阻止了大数据大约171 KB的帖子。 我在mod_security.conf中进行了以下配置

SecRequestBodyNoFilesLimit 10486000
SecRequestBodyInMemoryLimit 10486000

答案 3 :(得分:0)

如果已设置PHP中的max_post_upload和max_file_upload, 并且在Limit2.quest或ModSec配置文件中设置了LimitRequestBody设置足够高的设置

然后可能会有一个.htaccess文件。

  1. 转到包含上传php文件的目录(抛出错误的文件或页面。)
  2. 2。制作或编辑.htaccess

    3。编辑或创建一行     LimitRequestBody 20971520在其中。

    1. 保存.htaccess。设置权限。 (644和apache所有者)

    2. 可能会重启apache。

    3. 田田希望修复。

      此设置仅设置此文件夹的限制 - 这是避免php和apache中的全局设置的一种方法,这会使您对大型数据包/加载DOS攻击开放。

      LimitRequestBody 0为您提供无限制的上传。

答案 4 :(得分:0)

我一直在为413 –请求实体在最后一天左右遇到太大问题而苦苦挣扎,因为我试图将超大(以MB为单位)的图像上传到服务器。

我的设置是apache(227)将请求代理到jboss eap(6.4.20)服务器,以访问其余端点。

2件事对我有用。

  1. 在虚拟主机级别上需要SSLVerifyClient。这意味着所有资源都需要提供有效的客户端证书才能提供。这不是我的选择,因为/ api以外的所有资源都不应受到相互身份验证的保护。因此,虽然有效,但对我来说这不是一个选择。

  2. 我删除了所需的全局级别SSLVerifyClient并将其保持为“可选”。我仅在<Location /api>...</Location>上启用了必需的选项。技巧是只有在达到特定阈值后才进行SSL重新协商-这将是我们期望的上传文件大小。

  3. 所以,最终,我不得不在特定的LocationMatch上启用“ SSLRenegBufferSize”设置,如下所示:

    <LocationMatch ^/api/v1/path/(.*)/to/(.*)/resource/endpoint$>
    SSLRenegBufferSize 5242880 #allow upto 5MB for files to come through </LocationMatch>

上面的情况中的

(。*)表示端点中的路径参数。希望这会有所帮助。