进度条走完立刻提示上传失败,服务端日志提示移动文件失败。乍看像缓存或者权限的锅,追下去往往不是。

upload_tmp_dir = /www/wwwroot/example.com/tmp
mv /tmp/php123 /www/wwwroot/example.com/uploads/

追下去是这么回事:上传临时文件落在系统临时分区,目标目录在另一分区,移动操作被系统拒绝。

「上传临时目录跨区」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

具体做法是,让临时目录与目标目录同分区;或改用复制后删除;确认目录权限。

验收就看一点,上传完成后文件正常落到目标目录。

作者 9823189