Fatal error: Cannot redeclare …() (previously declared in …)
WordPress 出現「Cannot redeclare …() (previously declared in …)」:原因與檢查方式
# 錯誤紀錄中常見的內容
PHP Fatal error: Cannot redeclare …() (previously declared in /wp-content/plugins/…)
同一個函式名稱被宣告兩次時,PHP 會以這個錯誤停止執行。在 WordPress 裡,通常是兩個外掛、或外掛與佈景主題各自帶了同名的函式,或同一個檔案被載入兩次。PHP 8.4 的寫法是「Cannot redeclare function …()」。
你現在看到的是哪一種情況?
新外掛宣告的函式,另一個外掛或佈景主題已經宣告過。錯誤訊息會列出兩個檔案。
片段定義的函式已經存在,常見原因是同一段程式貼了兩次。
外掛資料夾被複製或改名,兩份都是啟用狀態。
常見原因
兩個外掛有同名的輔助函式:兩個外掛宣告前都沒有用 function_exists() 檢查。
重複的程式片段:同一個函式被加進 functions.php 或片段外掛兩次。
內附的程式庫被載入兩次:兩個外掛帶了同一個程式庫,卻沒有防重複載入的檢查。
外掛有兩份:同一個外掛的舊版與新版都在啟用狀態。
參考資料
不想自己動手處理?WP119 全自動修復
白畫面與致命錯誤(外掛互撞、PHP 版本不相容)屬於自動處理的項目:系統在維修站的副本上開啟除錯模式,找出造成錯誤的外掛或佈景並停用(不刪除);記憶體不足造成的白畫面,則調高記憶體上限。修好後先複驗首頁與內頁,通過才寫回您的主機(WP 後台模式為交付修復完成包)。修復在維修站的網站副本上進行,複驗通過後才寫回。您網站資料庫裡的受保護資料表(會員、留言、訂單、表單填寫)只取結構。SSH/FTP 模式下,系統寫回前先在您的主機建立修復前備份,寫回後驗證沒通過時,以這份備份進行還原。修復未能完成,修復費全額退還。
- 初步評估:輸入網址
- 複製到維修站:在副本上作業
- 找出原因:逐項檢查
- 修復與複驗:首頁與內頁
- 寫回或交付:複驗通過才進行
這個錯誤讓網站或管理後台打不開時,可以交給 WP119。
初步評估我的網站 →