如何修復 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 了嗎?