在 WordPress 后台点「发布」或「更新」时,弹出一个红条:Updating Failed 或 Publishing Failed。文章写完了,就是保存不进去。这种报错 90% 不是数据库问题,而是 REST API 被中途拦下。
先确认是不是 REST API 的问题
打开浏览器开发者工具 → Network 面板,再点一次发布,看有没有对 /wp-json/wp/v2/posts 的请求返回 403、500 或 (blocked)。也可以直接 curl 测试:
curl -I https://yourdomain.com/wp-json/wp/v2/posts
如果返回 401 正常;如果返回 403/500 或被防火墙拦截,先别动文章,先修接口。
最常见:安全插件/防火墙把 API 挡了
Wordfence、Sucuri、iThemes Security、Cloudflare WAF,甚至服务器 mod_security,都可能把 Gutenberg 编辑器调用 REST API 的请求误判为攻击。
- Wordfence → 防火墙 → 关闭「阻止 REST API 未授权请求」
- Cloudflare → Security Events → 放行自己 IP
- 服务器 mod_security → 临时禁规则或联系主机商放行
/wp-json/
插件冲突:快速隔离
用 FTP/SFTP 把 /wp-content/plugins 改名为 plugins_bak,再点发布。如果正常了,逐一把插件改回来,找到冲突项后换替代插件或等作者更新。
权限与磁盘空间
文件权限不对或磁盘满了也会导致保存失败:
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
df -h
发布失败排查速查表
| 现象 | 最可能原因 | 处理 |
|---|---|---|
| Updating Failed | REST API 被安全插件/防火墙拦截 | 检查 Wordfence/Cloudflare 规则 |
| Publishing Failed | 权限不足 / 磁盘满 / 插件冲突 | 改权限、查磁盘、重命名 plugins |
| 返回 403 / 500 | 服务器 mod_security / PHP 报错 | 查看 error_log、临时关闭规则 |
常见问题
Q:为什么只有新文章保存失败,旧文章正常编辑?
多半是有新插件启用后拦截了 REST API,或主题升级后调用了新接口被防火墙拒绝。
Q:改完权限还是不行?
看一下磁盘是否满了(df -h),并检查 PHP 错误日志里的 fatal error。
Q:关了 Wordfence 就正常,能继续用吗?
可以,把 REST API 路径加入白名单,不必关整个防火墙。
如果你在 fenij.com 还遇到过其他保存失败的场景,欢迎在留言里补充,一起完善这份排查清单。