PHP/Apache POST 限制?

PHP/Apache POST 限制?

我正在尝试在安装的 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 请求实体太大”。

https://stackoverflow.com/a/19447688/784542解决了我的问题。

相关内容