define('WP_DEBUG_LOG', '/var/log/wp/debug.log');
# nginx
location ~* \.log$ { deny all; }
访问 /wp-content/debug.log 直接下载到 8MB 文本,里面全是插件报错,带着完整文件路径、后台地址和几次登录失败的账号名。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,WP_DEBUG_LOG 打开后日志默认写在 wp-content 下,这个目录对 web 可读。调试完没关,日志一直堆着,路径和账号信息等于挂在公网上。
围绕「日志文件泄露」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。
处理上按这个顺序:先把 WP_DEBUG_LOG 改成一个 web 根之外的绝对路径;已存在的 debug.log 下载留档后删除,只改权限没用;nginx 层加一条规则,任何 .log 请求直接 403。
改完只确认一件事:再访问 debug.log 返回 403,新日志写到 /var/log/wp/ 下。
