Fatal error: Array and string offset access syntax with curly braces is no longer supported
WordPress 升級 PHP 8 後出現「Array and string offset access syntax with curly braces」錯誤:原因與檢查方式
PHP 8.0 移除了用 $value{0} 讀取字元或陣列元素的舊寫法。仍使用這種寫法的檔案無法編譯,所以只要有一個外掛或佈景主題用了它,PHP 8 升級後整個網站就會停擺。
你現在看到的是哪一種情況?
主機換到 PHP 8,某個外掛或佈景主題檔案用了大括號取值的寫法。
舊寫法在只有 wp-admin 才會載入的檔案裡。
常見原因
為 PHP 7.3 或更舊版本寫的程式:這個寫法在 PHP 7.4 被標為棄用,在 PHP 8.0 移除。
沒人維護的外掛或佈景主題:沒有任何更新替換掉舊寫法。
內附的舊程式庫:外掛內附了某個第三方程式庫的舊版。
參考資料
- Backward incompatible changes in PHP 8.0 (PHP.net)
- Debugging in WordPress (Advanced Administration Handbook)
不想自己動手處理?WP119 全自動修復
白畫面與致命錯誤(外掛互撞、PHP 版本不相容)屬於自動處理的項目:系統在維修站的副本上開啟除錯模式,找出造成錯誤的外掛或佈景並停用(不刪除);記憶體不足造成的白畫面,則調高記憶體上限。修好後先複驗首頁與內頁,通過才寫回您的主機(WP 後台模式為交付修復完成包)。修復在維修站的網站副本上進行,複驗通過後才寫回。您網站資料庫裡的受保護資料表(會員、留言、訂單、表單填寫)只取結構。SSH/FTP 模式下,系統寫回前先在您的主機建立修復前備份,寫回後驗證沒通過時,以這份備份進行還原。修復未能完成,修復費全額退還。
- 初步評估:輸入網址
- 複製到維修站:在副本上作業
- 找出原因:逐項檢查
- 修復與複驗:首頁與內頁
- 寫回或交付:複驗通過才進行
PHP 升級後這個錯誤讓網站停擺時,可以交給 WP119。
初步評估我的網站 →