我正在尝试在安装的 MediaWiki 上编辑大型(200KB 左右)文章,但这样做会出现此错误:
请求的实体太大
请求的资源
/路径/到/我的/wiki/index.php
不允许使用POST请求来请求数据,或者请求中提供的数据量超出了容量限制。
根据 Apache 文档,限制请求主体默认为 0(无限制)。我不认为我接近维基百科限制为 2048KB。我找不到 PHP 是否限制了我,或者在哪里限制了我。
是什么赋予了?
更新: 我的 Apache 错误日志显示:
request body exceeds maximum size for SSL buffer
下面就是:
could not buffer message body to allow SSL renegotiation to proceed
看来可以找到一个可能的解决方案这里。
但它要求我重新编译mod_ssl
。在那个错误报告的末尾,他们似乎在谈论为此添加一个指令,而不是重新编译。有人知道这是否发生了吗?另外,我是否只需要重新编译mod_ssl
即可修复此问题?如果是这样,我如何使用编译后的版本而不是原版 Ubuntu 版本?
答案1
你为什么不仔细检查一下 POST 请求的大小呢?例如,你可以使用 netcat 监听 8080。
netcat -l -p 8080
然后,在提交表单之前,重定向浏览器以使用端口 8080 上的代理。您应该得到如下内容:
POST http://example.com/path/to/my/wiki/index.php HTTP/1.1
Host: example.com
Proxy-Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 217
最重要的一行是Content-Length
再次检查内容的实际长度。这至少可以帮助您确定哪里出了问题。您至少会对实际内容大小有所了解。
然后,确保您直接连接到 Apache,而不是通过代理或反向代理。一些反向代理会限制请求的最大大小,作为一种安全措施。因此,您可能需要检查这一点以及 Apache 日志,以确保没有发生其他事情。
答案2
我也遇到了同样的错误,这是由于 mod security 与 ajax 上传 500MB 及更少的文件有关,为了修复它,我打开了配置。
sudo vi /etc/httpd/conf.d/mod_security.conf
改变了这一点
SecRequestBodyLimit 131072
SecRequestBodyNoFilesLimit
SecRequestBodyInMemoryLimit
到:
SecRequestBodyLimit 524288000
SecRequestBodyNoFilesLimit 524288000
SecRequestBodyInMemoryLimit 524288000
答案3
我遇到了错误“413 请求实体太大”。