磁盘告警时看 debug.log 已经 12GB,打开全是同一个文件的同一行:PHP Notice: Undefined index: abc_token in class-api.php on line 214。一分钟写进去上万条。日志里能对上时间点,这种反而好排。

接口返回里没带的字段被直接当下标读取,每个请求都触发一次 notice。调试日志开着,这些提示就一条不落地写进文件,量一大就把分区撑满。这一点先确认清楚,后面就不用反复试。

$token = $payload["abc_token"] ?? "";
// 或者:
if (!isset($payload["abc_token"])) { return new WP_Error("abc_no_token", "缺少 token"); }

「插件日志刷屏」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

报错里带路径的,先去看那个路径在不在、权限对不对。同一份配置存在多处的,先确认改的是被加载的那一份。

处理上按这个顺序:先把日志级别收回来 关掉 notice 只留 error;那行改成先判断键存在再取值 或者用空值合并;清理旧日志用截断不要删除 保证文件句柄还能继续写。

结果对不对很好判断,刷十次接口后 debug.log 体积不再增长,接口返回结果和之前一致。

作者 9823189