Php 使用过大的文件上载关闭Apache连接

Php 使用过大的文件上载关闭Apache连接,php,apache,upload,connection,Php,Apache,Upload,Connection,我目前正在一个网站上工作,用户可以上传文件。如何防止上载大型文件?当时,没有任何选项(PHP的post_max_size和upload_max_filesize)是有用的:文件是完全上传的。我只想用太大的文件关闭连接(通过事先检查Content LengthHTTP头,并在上传文件时检查)。是否有Apache指令或PHP配置密钥 谢谢你抽出时间 编辑:已添加(CentOS默认)。 EDIT2:也添加了(CentOS默认值) EDIT3:当给定的文件太大时,PHP似乎会关闭管道。尽管如此,Apac

我目前正在一个网站上工作,用户可以上传文件。如何防止上载大型文件?当时,没有任何选项(PHP的
post_max_size
upload_max_filesize
)是有用的:文件是完全上传的。我只想用太大的文件关闭连接(通过事先检查
Content Length
HTTP头,并在上传文件时检查)。是否有Apache指令或PHP配置密钥

谢谢你抽出时间

编辑:已添加(CentOS默认)。
EDIT2:也添加了(CentOS默认值)

EDIT3:当给定的文件太大时,PHP似乎会关闭管道。尽管如此,Apache仍然允许传输,直到传输结束。

您可以使用Apache的。语法很简单(以字节为单位):

这在
httpd.conf
.htaccess
中都有效,如果编辑
httpd.conf
(Ubuntu上的
sudo服务apache2 restart
),请注意重新启动

如果您需要对每个文件设置限制(将头像上载限制为5 MB,但将附件限制为20 MB),您可以使用:


LimitRequestBody 5242880#5 MB
LimitRequestBody 20971520#20 MB
好的

因此,您面临的主要问题是在上传完成后应用Apache指令LimitRequestBodyLimitXMLRequestBody。似乎apache正在等待临时文件夹中的完整文件,然后再检查其大小

因此,您需要在检测到过大的上传后立即切断连接。曾几何时,mod_油门是一个可以实现这一点的模块。勾选此项,您可以获得一份带控制模块的面板列表,这些面板可能适合您的需要

例如,可以限制bandwith每个客户端IP,但这不是每个请求每个IP的限制。还有,在下载方面有很多限制,但我找不到很多东西来进行上传管理(可能只是关闭早期慢速上传)。另见

因此,您还可以检查操作系统级别限制(在TCP堆栈上)或高级防火墙功能(在servfault上询问)


您也可以使用客户端限制工具,如隐藏表单值或js上传器设置,但与客户端使用的任何工具一样,在安全方面,您无法避免有人更改客户端限制。

,检查该答案的参数我们尝试了所有这些,但与时间相关的除外:我们不希望依赖于连接的速度。无论如何,PHP似乎不是问题所在,而是Apache的问题。正如链接和@PhpMyCoder答案中所述,您在Apache设置中拥有LimitRequestBody;遗憾的是,该文件已完全上载,Apache随后将断开连接。真的吗?然后,您应该用Apache记录一个bug报告-这与此功能的意图明显矛盾(即,我对您的方法非常怀疑)
LimitRequestBody 10490000 # 10 MB
<Files avatarUpload.php>
    LimitRequestBody 5242880 # 5 MB
</Files>

<Files attachmentUpload.php>
    LimitRequestBody 20971520 # 20 MB
</Files>