白屏 Feature Image
|

WordPress 網站白畫面 (WSoD) 怎麼辦?完整教學:原因、解決與預防

什麼是網站白畫面(White Screen of Death) ?

在雅酷數位的經驗中,WordPress 使用者常遇到的困擾之一是「白畫面」(White Screen of Death,簡稱 WSoD)。想像一下,您的網站或網站的某些部分,突然變成一片空白,沒有任何內容、沒有錯誤訊息,只留下一片令人不知所措的白色。

WSoD 通常不會直接顯示錯誤代碼,讓問題診斷變得棘手。有時瀏覽器可能會顯示 HTTP 500 錯誤,提示「此頁面無法運作」,但這依然無法指出確切的原因。但使用者不需擔心!今天我們將深入探討 WSoD 的成因,並提供一套系統性的解決方案與預防措施。


1. 什麼原因導致白畫面

白屏的成因
白屏的成因

WSoD 的背後可能有多種原因,通常與 PHP 程式碼或資料庫問題有關。以下是最常見的幾個成因:

  • 外掛衝突 不相容或編碼不良的外掛是常見原因。衝突可能發生在外掛之間、外掛與您的佈景主題之間,或是外掛與 WordPress 核心之間,尤其是在更新後。
  • 佈景主題問題 類似於外掛,您目前使用的 WordPress 佈景主題可能存在程式碼錯誤、與外掛衝突,或在更新後出現相容性問題。損壞的佈景主題檔案或 functions.php 檔案中的不良程式也可能導致 WSoD。
  • 語法錯誤 您網站程式碼中的錯誤,尤其是在手動編輯佈景主題或外掛檔(如 functions.php時導致的錯誤,可能會讓您的網站掛掉。即使是像少了一個分號這樣的小錯誤,也可能導致 WSoD。
  • 自動更新失敗 有時,WordPress 更新可能會失敗或超時,留下一個名為 .maintenance 的檔案,這會導致 WSoD。
  • 伺服器問題 您的主機伺服器上的問題,例如設定錯誤,有時也會以 WSoD 的形式表現出來。

2. 如何排除問題並修復 WSoD?

解決WSoD的步驟
解決WSoD的步驟

解決 WSoD 有一套系統性的方法。由步驟1到9,我們將從最常見且最簡單的修復方式開始。

(1) 清除快取: 過時或損壞的快取有時會導致顯示問題

  • 清除您的瀏覽器快取。
  • 如果您使用 WordPress 快取外掛 (如 LiteSpeed Cache 或 WP Rocket),請清除該外掛的快取。這通常可以在外掛的設定頁面(若後台可訪問)完成。如果無法訪問後台,您可能需要通過 FTP/檔案管理器或主機提供商的工具手動刪除快取檔案。
  • 有些主機商會使用伺服器端快取。通常大多數不會。如果您的主機商使用伺服器快取,請清除它。不同的主機商有不同的程序 – 過程應該直接且容易。
清除瀏覽器快取Step2
清除瀏覽器快取 Step1
清除瀏覽器快取Step1
清除瀏覽器快取 Step2
清除外掛快取
清除外掛快取 (以liteSpeed Cache為例)
清除主機商伺服快取
清除主機商伺服快取(以Hostinger為例)

(2) 檢查自動更新失敗:

  • 使用FTP或檔案管理員在您的 WordPress 根目錄中尋找 .maintenance 檔案。如果找到此檔案,請將其刪除並重新載入您的網站。此檔案通常在更新後會自動移除,但有時會卡住。

(3) 啟用除錯模式:

  • WordPress 內建了除錯模式,可以顯示被白畫面隱藏的 PHP 錯誤
  • 透過 FTP 或檔案管理器連接到您的 WordPress 根目錄,找到 wp-config.php 檔案。
  • 打開該檔案,找到這兩行程式碼: 
    define(‘WP_DEBUG’, false) ;
    define(‘WP_DEBUG_LOG’, false);
    將false改為true (如果找不到這兩行程式碼,您可直接貼上下面兩行程式碼):
    define(‘WP_DEBUG’, true) ;
    define(‘WP_DEBUG_LOG’, true);
  • 程式碼務必置於/* That’s all, stop editing! Happy blogging. */之前
  • 儲存檔案並重新載入您的網站。網頁應該會顯示錯誤訊息,指出導致問題的檔案和程式碼。完成故障排除後,記得將 true改回 false。
wp-debug true 程式碼
wp-debug true 程式碼

(4) 檢查外掛衝突: 

  • 如果您可以訪問後台管理介面: 前往「外掛」>「已安裝外掛」,選擇所有外掛,然後從批次操作選單中選擇”停用”。如果這樣解決了 WSoD,請逐一重新啟用外掛,每次啟用後檢查網站,直到白畫面再次出現。這樣就能找出有問題的外掛。
  • 如果您無法訪問後台管理介面: 使用 FTP 客戶端(如 FileZilla)或您的主機提供商的檔案管理員來瀏覽您的網站檔案。到 wp-content 資料夾,並將 plugins 資料夾重新命名 (例如 plugins_disabled 或 plugins.renamed)。這會停用所有外掛。再次檢查您的網站。如果正常運作,請將資料夾名稱改回 plugins,然後通過後台管理介面(一旦可訪問)逐一重新啟用外掛,以找出元兇。
進入檔案管理員 (以Hostinger為例)
進入檔案管理員 (以Hostinger為例)
進入外掛資料夾Step1
進入外掛資料夾Step1
進入外掛資料夾Step2
進入外掛資料夾Step2

(5) 切換到預設佈景主題: 

  • 如果您可以訪問後台管理介面: 前往「外觀」>「佈景主題」,然後啟用一個預設的 WordPress 佈景主題,例如 Twenty Twenty-Three 或 Twenty Twenty-Two。如果這樣修復了 WSoD,那麼問題就出在您之前的佈景主題上。檢查佈景主題是否有更新,或聯繫佈景主題開發者。
  • 如果您無法訪問後台管理介面: 使用 FTP 或檔案管理員導航到 wp-content/themes。將您目前使用中佈景主題的資料夾重新命名。WordPress 應該會自動回退到已安裝的預設佈景主題(如果有的話)。如果沒有,您可能需要手動上傳一個預設佈景主題的資料夾。如果切換佈景主題解決了問題,請考慮重新安裝一份您原始佈景主題的乾淨版本,或檢查最近的自訂修改。
進入佈景主題資料夾Step1
進入佈景主題資料夾Step1
進入佈景主題資料夾Step2
進入佈景主題資料夾Step2

(6) 增加 PHP 記憶體限制: 

  • 記憶體耗盡是一個常見原因。
  • 透過 FTP 或檔案管理器編輯 wp-config.php 檔案。
  • 在 /* That’s all, stop editing! Happy publishing. */ 這一行之前,添加以下程式碼:
  • WP_MEMORY_LIMIT 是前端的預設限制; WP_MAX_MEMORY_LIMIT則是後端的預設限制。
  • 您會希望主要為前端訪問設定 WP_MEMORY_LIMIT,這樣當許多並發用戶訪問伺服器時,您不會用盡記憶體。 WP_MAX_MEMORY_LIMIT 設定得更高,以允許需求較重但並發性較低的後台管理功能。
  • WP_MAX_MEMORY_LIMIT必須大於或等於WP_MEMORY_LIMIT。
  • 一般來說,128 到 256 MB 應該足夠。儲存檔案並檢查您的網站。
增加 PHP 記憶體限制
增加 PHP 記憶體限制

(7) 解決語法錯誤:

  • 如果除錯模式指向語法錯誤,或者您最近編輯過程式碼,請仔細檢查這些更改。即使是一個小小的錯字或少家分號”;”,也可能導致 WSoD。如果您知道哪個檔案和行號包含錯誤(通常由除錯模式找出),您可以通過 FTP/檔案管理器修復它。或者,如果您不確定如何修復程式碼,在錯誤發生前從備份還原是一個更安全的選擇。

(8) 從備份還原:

  • 如果以上步驟都無效,從 WSoD 出現之前的最近備份還原您的網站,通常是讓網站重新上線的最快方法。

(9) 聯繫您的主機供應商:

  • 如果您已嘗試了以上步驟但仍苦無成果,請聯繫您的主機供應商的客服。他們可以檢查伺服器端的問題或協助進一步的故障排除。

3. 如何預防 WordPress 白畫面?

如何避免WSoD
如何避免WSoD

雖然您無法預防所有可能的錯誤,但您可以有效降低遇到 WSoD 的風險:

  • 定期備份 : 為您的 WordPress 網站和資料庫制定定期的備份計劃。將備份儲存在硬碟或獨立的伺服器上。像 Jetpack BackupDuplicator UpdraftPlus的外掛或您的主機商提供的服務可以自動化此過程。
  • 使用測試環境 : 在將更新(WordPress 核心、佈景主題、外掛)和程式碼更改之前,先在測試網站(您的正式網站的副本)上進行測試。這有助於在安全的環境中發現衝突或錯誤,。
  • 選擇信譽良好的佈景主題和外掛: 僅從可信任的來源安裝佈景主題和外掛。檢查評論、更新頻率和相容性資訊。避免使用不可靠或維護不善的軟體。挑選外掛及佈景主題的技巧,請參考此篇: 如何挑選外掛及佈景主題
  • 保持所有內容更新: 定期更新 WordPress 核心、佈景主題和外掛。
  • 小心編輯程式碼 : 如果您需要添加自訂程式碼,請小心操作。考慮使用子佈景主題(Child Theme)進行佈景主題自訂,或使用程式碼片段外掛,而不是直接編輯核心檔案。

總結

透過了解 WordPress 白畫面的常見原因,並遵循系統性的故障排除步驟,您可以有效地解決這個棘手問題,並實施預防措施,讓您的網站順暢運行[2][5]。