程序在本机测试正常,换到新服务器后一上传就 500,错误日志指向临时文件。乍看像缓存或者权限的锅,追下去往往不是。

php -i | grep upload_tmp_dir
mkdir -p /tmp/php && chown www:www /tmp/php
chmod 700 /tmp/php

追下去是这么回事:上传临时目录不存在或运行账号没有写权限,移动文件时失败。

「上传临时目录」这类改动最怕改一半,回滚脚本先准备好,再动生产。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

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

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

改完隔一天再看一次,当场正常不代表能稳住。

具体做法是,确认临时目录路径;给运行账号写权限;重启进程后复测。

验收就看一点,文件可以正常上传并保存到目标目录。

作者 9823189