Apache 的 块只能通过 LimitRequestBody 限制请求体总字节数(含文件、表单、边界等),单位字节,超出即返回413错误;单文件大小和上传超时均由PHP配置控制,且须禁用上传目录脚本执行。

Apache 的 <directory></directory> 块本身不能限制“单个文件上传大小”,也不能设置“上传超时”,但它能通过 LimitRequestBody 控制该目录下所有 HTTP 请求体的**总字节数上限**(含文件数据 + 表单字段 + multipart 边界等),这是唯一在 Apache 层面对上传做硬性拦截的方式。超时则需由 PHP 配置控制,Apache 不处理上传过程中的时间等待。
✅ 在 中正确设上传总大小上限
LimitRequestBody 是唯一可用指令,单位为字节,写在 <directory></directory> 块内即可生效:
- 例如限制该目录下所有 POST/PUT 请求体最大为 20MB:
LimitRequestBody 20971520 - 该值必须略高于 PHP 的
post_max_size(建议 +100KB),否则 multipart 边界开销可能触发 413 错误 - 超出立即返回 HTTP 413 Request Entity Too Large,请求不会进入 PHP,不占后端资源
- 注意:
<directory></directory>需启用对应权限,若用.htaccess实现,须确保AllowOverride Limit已开启
⚠️ 单文件大小不由 Directory 控制,靠 PHP 配置
Apache 不解析上传内容,无法识别“哪个字段是文件”。单文件大小限制完全由 PHP 决定,必须同步配置:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
upload_max_filesize = 15M:单个文件允许的最大值 -
post_max_size = 18M:整个 POST 请求上限,必须 ≥upload_max_filesize,并预留 multipart 开销 - 这两项写在站点使用的
php.ini或php_admin_value指令中(如 VirtualHost 内)
⏱️ 超时不是 Directory 能管的,得调 PHP 时间参数
Apache 无“上传超时”概念;它只管接收完整请求体,不等文件传完才开始处理。真正影响大文件上传是否中断的是 PHP 的两个时间设置:
-
max_input_time = 600:PHP 接收全部输入(包括上传数据)的最长时间(秒) -
max_execution_time = 600:脚本整体执行时限,上传完成后处理逻辑也计入其中 - 若用 PHP-FPM,还需检查
request_terminate_timeout和request_slowlog_timeout
? 安全补充:禁用上传目录的脚本执行
仅限大小还不够,上传目录必须禁止执行 PHP 等脚本,防止恶意文件被直接访问运行:
- 在同个
<directory></directory>块中加:php_flag engine off(mod_php)或SetHandler none(PHP-FPM 场景) - 或更彻底:
Require all denied+ 特定白名单规则,仅允许静态文件访问

















