php 请求实体太大

eh57zj3b  于 2022-12-21  发布在  PHP
关注(0)|答案(6)|浏览(112)

我收到这条信息,

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中但没有帮助
如何克服这一点?
谢啦,谢啦

mzmfm0qo

mzmfm0qo1#

在您讨论完PHP的memory_limitpost_max_sizeupload_max_filesize之后,我想向您推荐一些与此主题相关的文章,也许其中一篇可以解决这个问题。
我发现这篇文章上服务器故障:
https://serverfault.com/questions/79741/php-apache-post-limit/79745#79745

      • sybreon**建议仔细检查Content-Length,并引用-"确保您直接连接到Apache,而不是通过代理或反向代理。一些反向代理为请求的最大大小设置了上限,作为一种安全措施。因此,您可能需要检查该值以及Apache日志,以确保没有发生任何其他情况。"
  • sybreon也张贴了这个链接:Apache 413 error problems.

    • 如果您在Apache中打开了mod_ssl模块,**以下设置才适用。(否则此设置可能导致服务器崩溃。)
      引用文章:
  • "我使用的是Apache SSL客户端证书,限制为128K,如果必须进行重新协商,较大的POST将失败。

This Bugzilla posting提供了一些线索-您必须将以下内容设置为SSL服务器的默认值,而不仅仅是目录。*

SSLVerifyClient require
  • 否则,它将强制进行某种重新协商,并失败,并显示413错误。"*
  • 上一篇文章还提到了LimitRequestBody指令。

一个家伙在这里说,这个指令的适当设置解决了他的问题。
我希望这些设置中的一个能解决这个问题!

brvekthn

brvekthn2#

对我来说唯一有效的方法是调优SSL缓冲区大小。您可以通过...

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

...然后重新启动Apache以使更改生效。(可在以下位置找到此文件:http://forum.joomla.org/viewtopic.php?p=2085574
您还可以使用"Location/"将设置简单地应用于整个VirtualHost:

<VirtualHost *:443>
# ...
    <Location />
        SSLRenegBufferSize 101048600
    </Location>
# ...
</VirtualHost>
dddzy1tm

dddzy1tm3#

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

SecRequestBodyNoFilesLimit 10486000
SecRequestBodyInMemoryLimit 10486000
y1aodyip

y1aodyip4#

如果已设置PHP中的max_post_upload和max_file_upload,并且Apache2.conf或ModSec配置文件中的LimitRequestBody设置足够高
那么.htaccess文件可能会起作用。
1.转到包含上传php文件的目录(抛出错误的文件或页面)。
2 .创建或编辑.htaccess
3 .编辑或创建一个包含LimitRequestBody 20971520的行。
1.保存. htaccess并设置权限。(644和apache所有者)
1.可能重新启动Apache。
嗒哒。希望修好了。
这个设置只为这个文件夹设置了这个限制-这是避免php和apache中全局设置的一种方法,全局设置会使您面临大数据包/负载DOS攻击。
LimitRequestBody 0为您提供无限的上传。

alen0pnh

alen0pnh5#

我挣扎着与这个413 -请求实体太大的问题,为最后一天左右,因为我试图上传勉强大(MB)的图像到服务器。
我的设置是Apache(227)将请求代理到JBoss EAP(6. 4. 20)服务器以访问REST端点。
有两件事对我很有效。
1.使SSLVerifyClient在虚拟主机级别成为必需。这意味着所有资源都需要提供有效的客户端证书才能得到服务。这对我来说不是一个选项,因为除/API外的所有资源都不应受到相互身份验证保护。因此,虽然它起作用,但对我来说不是一个选项。
1.我删除了全局级别的SSLVerifyClient required,并将其保留为“optional '。我只在<Location /api>...</Location>上启用了required选项。技巧是只有在达到某个阈值后才进行SSL重新协商-这将是我们想要的上传文件大小。
1.所以,最后我不得不在特定的LocationMatch上启用“SSLRenegBufferSize”设置,如下所示:
<LocationMatch ^/api/v1/path/(.*)/to/(.*)/resource/endpoint$> SSLRenegBufferSize 5242880 #allow upto 5MB for files to come through </LocationMatch>
(.*)在上面的例子中表示我的路径参数在端点。希望这有帮助。

qyzbxkaa

qyzbxkaa6#

在php.ini中提高了PHP的memory_limit,post_max_size和upload_max_filesize之后,我仍然遇到了这个问题。
apache2.conf中还需要以下内容:
限制请求主体1000000000
这是针对最大1GB的大小。
文档说0是默认值,这意味着无限制。然而,直到我设置了这个指令,我才能上传大文件。
不要忘记重新启动apache2。

相关问题