大文件上传时出现 Apache 错误 500 (mod_security)

Oct*_*tal 9 php apache .htaccess mod-security centos7

据我尝试,通常的解决方案都不适用于我。好吧,我的问题,每次上传“大文件”(600 KB ~)时,我都会收到 500 错误,使用较小的图像可以正常工作。所以...,即使有这个(极端).htaccess 文件,它也会不断发生,是的,.htaccess 是活动的:

upload_max_filesize = 100M
post_max_size = 100M
memory_limit = 128M
max_input_time = 6000
max_execution_time = 6000
Run Code Online (Sandbox Code Playgroud)

因此,我查看了日志并发现了这一点(只有一行,只是将其粘贴为易于阅读的行跳转):

[Mon Jul 27 17:09:28.<port> 2015] [:error] [pid 21423] [client <ip>]    
ModSecurity: Access denied with code 44 (phase 2). 
Match of "eq 0" against "MULTIPART_UNMATCHED_BOUNDARY" required. 
[file "/etc/httpd/conf.d/mod_security.conf"] 
[line "35"] [id "<another id>"] 
[msg "Multipart parser detected a possible unmatched boundary."] 
[hostname "<my host>"] [uri "<my script>"] [unique_id "<id (useless I think)"]
Run Code Online (Sandbox Code Playgroud)

但是,现在我无法找到如何编辑 mod_security(它具有默认配置和空的 activate_rules)配置以便(我认为)允许这个“大”文件上传。我在 Apache 2.4/CentOS 7 中运行 PHP 5.3。

Bar*_*ard 11

您拥有的事实ModSecurity alert意味着您不能拥有空的 activate_rules 文件夹,或者您以其他方式包含规则。

已知问题ModSecurity的这个错误,它似乎误报非常敏感。

当我的规则引发太多误报时,主要建议是关闭该规则(我假设触发的是规则 200003,但根据需要替换 id):

SecRuleRemoveById 200003
Run Code Online (Sandbox Code Playgroud)

  • 我不确定这是如何接受 OP 上传问题的答案。难道不应该是“SecRequestBodyLimit”应该针对上传问题进行更新吗?默认值为 12.5MB。 (2认同)