WordPress 貢獻者在過去的 24 小時內迅速準備了一個 6.4.1 維護版本,之前出現了一個關鍵的錯誤,是由於 Requests 庫的更改導致伺服器上執行舊版本 cURL 的更新問題。
託管公司開始報告這個錯誤的廣泛影響。來自丹麥最大的一家託管公司之一的 Tom Sommer 在 GitHub 上提交了一個問題,詳細說明了 cURL 超時如何影響網站:
- #657 在使用 Curl 7.29.0(以及可能其他版本) 時破壞了對 https://api.wordpress.org/和許多其他站點的下載
错误:RuntimeException:获取网址'https://api.wordpress.org/core/version-check/1.7/?locale=en_US'失败:cURL 错误 28:10000 毫秒后操作超时,已接收 807 个字节,共-1 个字节。
- 這也導致了站點健康中的 REST API 錯誤:
REST API 响应:(http_request_failed)cURL 错误 28:10005 毫秒后操作超时,已接收 XXX 个字节,共 XXX 个字节
- 這也阻止了 WordPress 外掛和核心更新,基本上是依賴 WordPress 內部 Curl 處理程式的任何東西。
這個問題成為了首要任務,因為不清楚使用者如何接收更新。
「即使現在您修復了這個問題,該問題也會阻止任何將來自動升級到 6.4.1 的操作,因為它破壞了 Curl 請求,所以人們更新的唯一方式是手動更新,」 Sommer 說。 「您等待的時間越長,問題就會變得越大。」
Nexcess 報告稱,數以萬計的站點受到了這個錯誤的影響。這個問題超出了大多數使用者自行修補的範圍,因此託管提供商必須找出如何更新他們的客戶。
「在升級到 WordPress 6.4 後,我的所有網站都被鎖住了,」Javier Martín González 報告說。 「沒有更新的網站正常工作。」
據報告,這個錯誤還導致了可能引起 Stripe API 、 WP-Admin 和效能問題。
Liquid Web/Nexcess 產品經理 Tiffany Bridge 總結了這個問題是如何出現的:
看起來像這樣:
- 有人報告了一個關於入侵保護系統和 WordPress 之間互動的錯誤
- 然後他們提交了自己的補丁給 WordPress
- 該領域的專案負責人要求提交者編寫測試,但他沒有這樣做
- 儘管缺乏測試,他們仍然合併了 PR
- 與此同時,如果我們執行受影響的 cURL 版本 (已確認為 7.29,可能還有其他版本),則所有託管提供商都必須自己恢復更改,以確保我們的客戶仍然可以獲得核心和外掛更新等小事情。
WordPress 核心貢獻者必須弄清楚這個錯誤是如何透過的,透過事後分析或其他討論,以防止將來發生類似的大規模問題。
WordPress 6.4.1 更新了 Requests 庫,從版本2.0.8
到2.0.9
,作為一個快速修復版本,以減輕問題。它撤銷了有問題的更改。版本 6.4.1 還包括針對其他三個獨立問題的修復。對於支援自動後臺更新的站點,自動更新已於今晚釋出。
發表回覆