上传成功提示已经有了,前台图片却是 403,直接打开文件地址也拒绝访问。目录里十月以前的图都正常,新文件权限显示为 600。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,插件为了写临时文件对上传目录执行了递归改权限,把目录和文件一起收紧到只有属主可读。Web 服务器进程和 PHP 不是同一个用户,读不到就返回 403。
碰到「插件上传目录权限」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
find wp-content/uploads -type d -exec chmod 755 {} \;
find wp-content/uploads -type f -exec chmod 644 {} \;
# 只对插件自己的子目录递归:wp-content/uploads/abc-cache
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
具体做法是,把上传目录改回 755 文件改回 644 只动权限不动属主;找出插件里改权限的那行 把范围限制在自建子目录;以后写文件用系统默认权限 不要手动传权限参数。
最后用这个标准收尾,新上传的图片直接打开返回 200,文件属性里权限显示为 644。
