如何修复 WordPress 更新失败和发布失败的错误

已发表: 2022-05-03
WordPress 更新失败

尝试更新 WordPress 网站上的内容时遇到“更新失败”“发布失败”错误? 你来对地方了。 让我们看看如何确定这些问题的根本原因,以及如何解决这些问题。

是什么导致了 WordPress 更新和发布失败的错误?

当您的 WordPress 实例无法与 WordPress REST API(WordPress 块编辑体验所依赖的)通信时,您可能会在 WordPress 中遇到“发布失败”“更新失败”错误。

虽然发生这种情况的原因有多种,但最明显的原因也是最简单的:您失去了互联网连接。

如果您失去了连接,您可能会遇到发布失败错误。 可能发生这种情况的另一个原因包括:

  • 最近对网站 URL 的更改
  • 任何阻止 API 调用的第三方服务
  • 一个故障插件

在大多数情况下,这很容易解决。

第 1 步 - 检查您的 Internet 连接并保存您的永久链接设置

可以说,您收到此错误的最常见原因是您失去了互联网连接。 如果您在更新博客文章时意外断开连接,WordPress 可能会返回此错误。 如果您已确保已连接到 Internet,请在新选项卡的编辑视图中打开帖子或页面(或确保在离开页面之前复制/保存更改)并尝试再次更新内容。

另一个常见的解决方案是简单地重新保存站点的永久链接设置(通常会因更改托管配置而丢失)。 有两种超级简单的方法可以做到这一点,我们建议的第一种是使用 WP CLI:

使用 WP CLI 刷新您的永久链接设置

如果您可以通过 SSH 访问您的托管环境,那么刷新永久链接设置的最简单方法是:

1 – SSH 进入您的服务器

2 – 导航到 WordPress 安装的根目录

3 – 通过运行刷新现有的永久链接结构:

 wp重写刷新

4 – 将永久链接结构更新回您之前使用的结构,例如:

 wp 重写结构 '/%postname%'

注意:如果您在生产环境中运行这些命令,请谨慎操作,因为将永久链接设置更改为不同的结构(然后不将其更改回您使用的相同结构)将导致流量损失。

刷新您的 WordPress 管理区域中的永久链接设置

或者,您也可以直接在 WordPress 管理区域中的永久链接设置中进行此更改,该设置可在“设置”>“永久链接”下访问,如下所示:

第 2 步 – 检查 REST API 是否被阻止

如上所述,您可能会收到 WordPress Publishing Failed 错误的另一个常见原因是 REST API 被禁用或阻止。 值得庆幸的是,WordPress 有一个漂亮的工具,您可以使用它来检查 REST API 状态。

只需转到工具,然后选择站点运行状况。 在这里,您会看到一堆与您的 WP 安装相关的错误。 如果 REST API 无法正常工作,您将看到以下错误:

“REST API 遇到了意外的结果。”

除此之外,站点运行状况报告还将为您提供一些有关如何进行故障排除的提示,例如 REST API 何时被您在站点上安装和激活的特定插件阻止。

话虽这么说,在您的网站上调试特定原因的最佳方法是检查浏览器的控制台日志,该日志可能会显示以下内容:

在上述情况下,确切的错误消息是“错误更新失败。 错误消息:响应不是有效的 JSON 响应。 ”,错误的原因是 Cloudflare 的防火墙阻止了用户的 IP 访问 WP JSON。

因此,如果问题似乎是您从 WP JSON 获得 403(禁止)状态代码或 REST API 错误,请确保您已采取的安全措施(例如 Web 应用程序防火墙,接下来介绍)是不会无意中将这些目录的访问列入黑名单,这会阻止用户在您的 WordPress 网站上发布或更新内容。

第 3 步 - 检查您的 Web 应用程序防火墙服务

Cloudflare 是全球最大的内容交付网络 (CDN) 服务、DDoS 保护、互联网安全和 DNS 服务提供商。

我们是 Servebolt 的 Cloudflare 的忠实粉丝——作为 Cloudflare 优化合作伙伴,它在 Servebolt 和 Cloudflare 之间提供更好的网络连接。 我们将 Cloudflare Enterprise 用于我们基础设施的各个部分,包括 Servebolt CDN 和我们的加速域服务。

如果您在站点中使用 Cloudflare,则该服务可能会阻止您的 REST API 调用。 如果触发了防火墙过滤器并且 Cloudflare 认为您的 IP 地址可疑,它将立即阻止所有 REST API 请求,这可能导致 WordPress 管理区域出现“更新失败”或“发布失败”错误。

在这种情况下,在您继续将您的 IP 地址列入白名单作为快速修复之前,要确定您的 IP 最终被您自己的 WAF 阻止的原因,请检查您的 Web 应用程序防火墙的分析以查看触发了哪个防火墙规则。

第 4 步 – 查看 PHP 错误日志并在 WordPress 中启用调试模式

在启用 WP Debug 和使用 WordPress 自己的调试系统之前,那些使用 Servebolt 的人将能够轻松访问您的 PHP 错误日志。

默认情况下,Servebolt Cloud 上运行的所有站点都会生成两个日志——ErrorLogAccessLog 。 这些都可以在您站点的根目录中的/logs文件夹中(即与/public目录处于同一级别)。

ErrorLog 文件将包含有关在您的站点上运行的任何生成运行时错误的代码的信息(这包括不会破坏您的站点并将继续在后台静默失败但有时会发生的错误)。

而且,如果这没有提供有关错误来源的任何进一步信息,您可以在 WordPress 中启用调试模式。 当您进入调试模式时,WordPress 会自动将收到的任何 PHP 响应记录在名为debug.log的新文件中。

这个新文件将出现在 wp-content 目录中,因此您只需查看以确定可能导致问题的任何服务器端响应。

要进入调试模式,请打开您的 wp-config.php 文件,并在最后一行之前添加以下行:

 // 启用 WP_DEBUG 模式
定义('WP_DEBUG',真);

// 启用到 /wp-content/debug.log 文件的调试日志记录
定义('WP_DEBUG_LOG',真);

// 避免在生产站点上公开显示错误(如果未声明,则默认为 true) 

定义('WP_DEBUG_DISPLAY',假);

查看 debug.log 文件后,您可以从 wp-config.php 文件中删除此代码以退出调试模式。

使用 Servebolt,您可以默认访问 PHP 错误日志,包括 ErrorLog 和 AccessLog。 除了慢查询日志,可通过联系我们的支持团队索取。 但是,WordPress 自己的调试系统非常适合识别错误,这样您就可以轻松运行,从而控制您的代码库。

这确实不言而喻,但是在对wp-config.php文件进行更改时,请谨慎行事,这有助于备份您的站点。 在 Servebolt Cloud 上运行的网站每天备份两次——我们运行日间备份(存储 3 天)和夜间备份(存储 30 天)。

您也可以自己备份您的 WordPress 网站。 要恢复备份,只需联系我们的支持团队,我们将免费恢复您最近的备份。

第 5 步 – 禁用所有 WordPress 插件并再次检查

如果您怀疑该错误是由您网站上的 WordPress 插件引起的,一种选择是禁用所有插件并检查是否可以解决问题。

为此,只需转到Plugins ,然后选择Installed Plugins。 然后,只需选择所有插件,并使用批量操作下拉菜单一次性停用它们。

接下来,返回您的屏幕,查看 WordPress 更新或发布失败错误是否仍然存在。 如果没有,现在您将知道您网站上运行的插件导致了错误。 这个阶段的蛮力识别方法是一个个重新激活插件,检查什么时候再报错。 而且,通过消除过程,您将能够识别出故障的插件。

发现问题后,我们强烈建议您联系插件作者,让他们知道并提供他们需要调试的任何信息,因为这有助于他们为您(以及所有其他用户)改进他们的产品。 这当然不是我们在调试时的首选,因为它显然非常乏味和耗时。

临时解决方法:安装经典编辑器插件(不是解决方案)

WordPress 5.0 版本的推出标志着 Gutenberg 编辑器的推出,即我们今天广泛称为的概念。

虽然这只是一种临时解决方法,但从古腾堡编辑器切换到经典编辑器可能允许您保存和更新您的帖子。

注意:这显然不是解决方案,因此只能用作临时解决方法。

要从 Gutenberg 切换到 Classic Editor,只需下载 Classic Editor 插件并在您的站点上激活它。 一旦它被激活,只需返回您正在编辑的帖子(或页面),然后您应该能够像往常一样再次更新或发布。

第 7 步 – 联系我们的支持团队

如果以上都不能解决您的问题,并且您已做出明智的决定,将您的 WordPress 网站托管在 Servebolt Cloud 上,请随时联系我们的支持团队。 我们可以通过聊天和电子邮件联系我们,我们的团队将非常乐意为您调查导致此问题的原因。

结论

遇到任何错误,尤其是阻止您保存工作或在您一直在处理的新内容上点击发布的错误,都不是任何人想要发生的。 因此,虽然鼓励您经常找到直接的修复和临时解决方案,但我们强烈建议您确定问题的根源,以便您可以采取措施确保它不会再次发生。

对经验上更快的托管主机感兴趣? 尝试Servebolt方式:

  • 可扩展性:在实际用户工作负载测试中,Servebolt 的平均响应时间为 65 毫秒,比第二好的响应时间快 4.9 倍。
  • 最快的全球加载时间: 1.26 秒的平均页面加载时间使我们在全球 WebPageTest 结果列表中名列前茅。
  • 最快的计算速度: Servebolt 服务器提供以前闻所未闻的数据库速度,每秒处理的查询比平均速度高 2.44 倍,运行 PHP 的速度比第二好的服务器快 2.6 倍!
  • 完美的安全性和正常运行时间:所有显示器的正常运行时间为 100%,并且我们的 SSL 实施获得 A+ 评级,您可以确保您的网站在线且安全。

所有这些都得到我们专家团队的支持。 准备好今天使用 Servebolt 免费测试 Bolt 了吗?