chown -R www-data:www-data wp-content/uploads
find wp-content/uploads -type d -exec chmod 755 {} \;
find wp-content/uploads -type f -exec chmod 644 {} \;

安全加固把 wp-content/uploads 改成 700,前台文章图片全变成 403,错误日志里是 Permission denied,同一台机器上的 css 和 js 却照常加载。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,700 只允许属主进入,PHP-FPM 和 Nginx 通常跑在不同用户下,工作进程读不到目录就被拒。静态文件由 Nginx 直接读盘,不经过 PHP,所以只影响图片和附件。

「静态目录 403」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

处理上按这个顺序:先把目录改回 755 确认图片恢复 排除其他原因;用 ps 查 Nginx 和 php-fpm 的实际运行用户 把属主统一到该用户;只对可写目录单独放宽 别整站放开权限。

改完只确认一件事:文章里的图片恢复显示,访问一张附件返回 200,日志里不再出现 Permission denied。

作者 9823189