Z-Blog 附件上传失败:类型、大小、权限三重定位
摘要
先说结论:附件上传失败基本跑不出三类原因——文件类型被拦、大小超限、目录不可写。按这三层依次排查,比反复重试有效得多。 一、第一层:文件类型 站点设置里有允许上传的扩展名清单,不在清单里的直接拒。 注意扩展名大小写与双扩展名(如 .jpg
先说结论:附件上传失败基本跑不出三类原因——文件类型被拦、大小超限、目录不可写。按这三层依次排查,比反复重试有效得多。
一、第一层:文件类型
- 站点设置里有允许上传的扩展名清单,不在清单里的直接拒。
- 注意扩展名大小写与双扩展名(如
.jpg.php)会被安全策略拦。 - 某些格式(svg、webp、avif)在老版本或严格配置下默认不允许,需要手动加。
- 提示「文件类型不允许」时先看这一层,别怀疑网络。
二、第二层:文件大小
这里有三个限制同时生效,任何一层超了都会失败,且提示信息往往不明确:
- 站点设置里的上传大小上限。
- PHP 的
upload_max_filesize与post_max_size。 - Nginx 的
client_max_body_size(超限常返回 413)。
排查方法:先用一张几十 KB 的小图测试。小图能传、大图不能传 → 一定是大小限制;小图也传不了 → 继续看权限。
三、第三层:目录与权限
- 上传目录必须可写,属主应与 PHP 运行用户一致。
- 检查磁盘是否已满(这个最常见也最容易被忽略)。
- 检查是否有安全软件/防火墙拦截了上传请求。
- 临时目录(
/tmp)不可写也会导致上传静默失败。
四、快速定位流程
- 看提示文案:明确说类型 → 第一层;说大小/413 → 第二层;无提示或 500 → 第三层。
- 开调试模式与错误日志,复现一次,直接看报错行。
- 用 curl 模拟上传,排除前端 JS 干扰。
五、加固建议
- 上传目录禁止执行 PHP,这是防木马的关键一步。
- 定期清理无主附件,避免占满磁盘。
- 备份时别忘了附件目录,只备数据库等于没备。
2026年10月22日 10:39
前后30天 · 点日期看归档
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日
11月20日
11月21日