如何修復WordPress死亡白屏(WSoD)故障問題

錯誤型別:
WP內部錯誤
錯誤名稱:
死亡白屏
英文名稱:
White Screen of Death(WSoD)
錯誤描述:
正如其名称一样,WordPress死亡白屏(也称为“ WSoD”)是该错误在你要访问网页时发生时,显示一个空白屏幕。

wordpress-white-screen-of-death-1-1024x512-1

您的WordPress網站是否曾突然遇到死亡白屏(WSoD),該錯誤會導致網站管理員和訪客都無法訪問您的網站。

由於缺少錯誤導致原因或解決方案等相關資訊,WSoD也堪稱無形殺手。但是,它又是最常見的WordPress錯誤之一。雖然死亡白屏缺少資訊提示,但依據以往經驗,在大多數情況下,都是可以解決的。

在本文中,我們將解釋什麼是WordPress死亡白屏(WSoD)及其常見原因,並且我們還將會提出九種常見的可行解決方案,以幫助您的網站儘快恢復正常執行。

什麼是WordPress死亡白屏?

正如其名稱一樣,WordPress死亡白屏(也稱為“ WSoD”)是該錯誤在你要訪問網頁時發生時,顯示一個空白螢幕。

根據不同的瀏覽器,您可能會收到不同的錯誤訊息。以下是Google Chrome瀏覽器中的示例,其中包含HTTP 500錯誤警告“This page isn’t working and is unable to handle the request”:

谷歌瀏覽器中的WordPress死亡白屏

谷歌瀏覽器中的WordPress死亡白屏

Mozilla Firefox瀏覽器的“死亡白屏”就更追求極致了,如下圖:

Firefox瀏覽器中的WordPress死亡白屏

Firefox瀏覽器中的WordPress死亡白屏

如您所見,它只是一個純白色的螢幕,不包含任何有用的錯誤或警告訊息。

WordPress死亡白屏一般是由PHP程式碼錯誤或記憶體限制耗盡引起的。

又或者是,由存在問題的主題或者外掛導致。如果網站前臺無法訪問但WordPress可進入,則可能是主題外掛問題。要快速檢查您WordPress網站儀表盤是否正常執行,只需導航至yourdomain.com/wp-admin。

那麼,應該如何解決WSoD?

如何修復WordPress白屏宕機(9種方法)

當遇到WordPress死亡白屏時,我們應該儘快修復它,讓我們看一下可以用來解決該問題的九種可能的解決方案。

1.禁用WordPress外掛

修復WordPress的死亡白屏(WSoD)的最簡單,最常見的方法之一就是簡單粗暴地禁用所有外掛。通常,網站由於外掛更新錯誤而關閉。

前提是您仍然可以訪問WordPress儀表盤,進入儀表盤-外掛-已安裝的外掛,選擇所有外掛,然後從批量操作下拉選單中選擇禁用:

停用所有WordPress外掛

停用所有WordPress外掛

如果這樣可以解決問題,則需要找到最終的罪魁禍首。為此,您可以逐個啟用剛才禁用的外掛,每啟用一個外掛後重新載入網站。若在啟用該外掛後網站發生崩潰時,那麼對應的外掛則是元凶了。

如果你需要繼續使用該外掛,您可以更新外掛到最新版本或者聯絡外掛的開發人員尋求幫助。

如果無法訪問儀表板,則可以通過FTP客戶端來訪問站點的檔案目錄。在網站根目錄的wp-content資料夾下,找到plugins資料夾。將其重新命名為類似於“plugins_old”的名稱:

重新命名外掛資料夾

重新命名外掛資料夾

然後,再次在前端檢查您的站點。如果可行,則需要跟前面一樣,逐一測試每個外掛。恢復外掛資料夾為“plugins”,然後分別重新命名每個外掛資料夾,直到找到有問題的資料夾為止。

2.切換到預設的WordPress主題

如果問題不在外掛,則有可能是WordPress主題導致死亡白屏。若要檢視是否存在此問題,可通過切換為預設主題來替換當前主題。

如果可以訪問WordPress儀表盤,進入後臺,然後點選選單外觀>主題。找到並啟用預設的WordPress主題,例如Twenty Twenty:

二0二0主題

二0二0主題

然後,再次測試您的站點,如果有效,則證明問題出在主題上。

如果無法訪問儀表盤,則通過FTP訪問站點資料夾,然後將wp-content/themes資料夾重新命名為其他名稱:

重新命名主題資料夾

重新命名主題資料夾

然後,WordPress將恢復至最新的預設主題。如果沒有其他主題,則可以從WordPress主題市場下載一個主題,然後將其上傳到主題資料夾。

之後,請再次檢查您的站點。如果有效,則可能是您的主題發生衝突或更新不正確。在這種情況下,您可能需要與主題開發人員聯絡以尋求幫助或考慮切換為其他主題。

3.清除瀏覽器和WordPress外掛快取

如果可以訪問WordPress網站後臺,但仍在前臺看到WSoD,則可能是由於快取問題所致。

要解決此問題,請嘗試清除Web瀏覽器的快取和WordPress外掛快取(假如你安裝了)。

如果WordPress網站上安裝了快取外掛,例如WP Rocket 或WP Super Cache,那麼大多數外掛會在設定頁面提供清除快取的快速方法。

以WP Super Cache為例,進入WordPress儀表盤,通過設定>WP Super Cache>Delete Cache

WP Super Cache外掛設定頁面

WP Super Cache外掛設定頁面

4.開啟除錯模式

如果還是沒有解決WordPress死亡白屏問題,儀表盤無法正常工作,或者您認為已找到問題,但想更深入地瞭解,可以啟用除錯模式。這將顯示網站上發生的任何錯誤。

要啟用除錯,您需要開啟WordPress安裝目錄的wp-config.php檔案。找到以下行:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
define( 'WP_DEBUG', false )
define( 'WP_DEBUG', false )
define( 'WP_DEBUG', false )

將“ false”更改為“ true”,然後重新載入網站。如果此行不存在,則可以將其新增到檔案頂部。

取代完全的白屏,您將會看到白屏和一些錯誤訊息。WSoD錯誤訊息應說明問題起源於哪個檔案,如下所示:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Cannot redeclare get_posts() (previously declared in
/var/www/html/wordpress/wp-includes/post.php:1874) in
/var/www/html/wordpress/wp-content/plugins/my-test-plugin/my-test-plugin.php on line 38
Cannot redeclare get_posts() (previously declared in /var/www/html/wordpress/wp-includes/post.php:1874) in /var/www/html/wordpress/wp-content/plugins/my-test-plugin/my-test-plugin.php on line 38
Cannot redeclare get_posts() (previously declared in 
/var/www/html/wordpress/wp-includes/post.php:1874) in 
/var/www/html/wordpress/wp-content/plugins/my-test-plugin/my-test-plugin.php on line 38

比如上述示例中,在錯誤資訊結尾處可以看到問題出在名為my-test-plugin的外掛的第38行。我們只要禁用該外掛即可解決問題。

如果啟用除錯模式後根本看不到任何錯誤,則可能需要聯絡主機提供商。您的伺服器上可能未正確配置除錯。

請記住,開啟除錯模式會向未經批准的使用者公開網站的某些資訊。因此,請確保在使用完該模式後關閉。

5.增加記憶體限制

如果在嘗試上述解決方案後WSoD空頁面仍存在,或者可能是由於記憶體限制或記憶體耗盡導致出錯,則需要為應用程式分配更多的記憶體。

這可以通過WordPress安裝目錄的wp-config.php檔案來完成。開啟檔案並新增以下程式碼:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
define('WP_MEMORY_LIMIT', '64M');
define('WP_MEMORY_LIMIT', '64M');
define('WP_MEMORY_LIMIT', '64M');

如果這行不通,再試試下面的辦法。在常規環境中,您可以使用.htaccess檔案來增加記憶體限制。只需新增以下行:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
php_value memory_limit 64M
php_value memory_limit 64M
php_value memory_limit 64M

如果無法訪問.htaccess檔案,則可以通過編輯php.ini 檔案來增加記憶體限制。 

為此,請通過FTP連線到伺服器。在網站的根目錄中,查詢php.ini檔案。並在該檔案內的任何位置新增以下行:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
memory_limit = 64M
memory_limit = 64M
memory_limit = 64M

如果仍然沒有足夠的記憶體可分配,則應用程式中可能存在問題。也許是主題或其中一個外掛正在使用過多的內容資源。

在這一點上,您可能需要找個技術人員通過站點的SQL日誌和其他資源統計資訊檢視原因,或者找主機提供商提供幫助。參考閱讀《如何解決WordPress記憶體限制錯誤(2種方法)

6.檢查檔案許可權問題

WSoD的另一個潛在原因是檔案許可權問題。但是,除非您真的知道自己在做什麼,否則不建議輕易手動去更改WordPress的目錄或者檔案的許可權,因為這可能會無意中建立攻擊者可以利用的漏洞。

當涉及WordPress許可權時,要遵循三個簡單規則:

  • 檔案應設定為664或644。
  • 資料夾應設定為775或755。
  • wp-config.php檔案應該被設定為660,600,或644。

如果擁有伺服器的SSH訪問許可權,則可以進入WordPress根目錄,使用以下命令應用適當的規則:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo find . -type f -exec chmod 664 {} +
sudo find . -type d -exec chmod 775 {} +
sudo chmod 660 wp-config.ph<code class=" language-bash"></code>
sudo find . -type f -exec chmod 664 {} + sudo find . -type d -exec chmod 775 {} + sudo chmod 660 wp-config.ph<code class=" language-bash"></code>
sudo find . -type f -exec chmod 664 {} + 
sudo find . -type d -exec chmod 775 {} + 
sudo chmod 660 wp-config.ph

如果不確定如何執行此操作或擔心失誤,還是找Web主機提供商尋求幫助吧。

7.檢查自動更新失敗問題

有時WordPress會遇到更新問題,例如伺服器超時。通常,此問題會自動解決。但是,在極少數情況下,它可能會導致WordPress死亡白屏。

這種情況下,應該做的第一件事是進入WordPress根目錄,並檢視是否存在.maintenance檔案(該檔案的名稱也可以縮寫)。

你需要做的事情就是嘗試刪除該檔案,然後再次載入您的網站。

如果更新成功,但WordPress無法自動刪除此檔案,則一切應恢復正常。

如果更新未完成,則它可能會自動重新啟動,在這種情況下,情況應該會恢復正常。

如果均失敗,請嘗試手動更新WordPres,也可以解決解決該問題。

關於WordPress維護模式的修復,建議檢視“WordPress維護模式 – 故障排除和自定義頁面教程”文章進一步瞭解。

8.解決語法錯誤或還原備份

WordPress發生WSoD死亡白屏的另一個常見原因是,執行WordPress網站程式碼編輯時  ,意外輸入了錯誤的內容或使用了錯誤的語法。

一個字元放置在錯誤的位置可能會破壞整個網站,這就是為什麼我們永遠不要在生產環境進行網站程式碼編輯的原因。

不過不用擔心。可以通過FTP連線到站點,並還原網站備份。作為一位WP站長,應該保持良好的網站資料備份習慣:你應該熟悉14個最佳WordPress資料庫外掛[WP資料庫備份、優化及遷移]

在寶塔面板上,對網站執行資料備份或者恢復,都非常簡單:

如果您是寶塔使用者,則可以通過寶塔控制面板的計劃任務,建立備份資料庫或者備份網站計劃任務,支援按週期定時備份,非常方便。

寶塔控制面板備份計劃

寶塔控制面板備份計劃

如果是恢復資料庫備份,您只需要進入寶塔控制面板,進入資料庫選單,找到你需要恢復的資料庫,點選“有備份”,選擇需要恢復的備份版本,點選“恢復”即可。

WordPress資料庫恢復

WordPress資料庫恢復

如果是恢復網站備份,則可以通過訪問寶塔控制面板-檔案,進入/www/backup/site目錄,找到網站備份壓縮包,將壓縮包解壓到對應網站目錄即可。

WordPress網站資料恢復

WordPress網站資料恢復

如果您之前在WordPress中啟用了除錯模式,則可能還會出現一條錯誤訊息,提示語法錯誤。如果是這種情況,它應該準確地告訴你哪個檔案第幾行的程式碼出現了問題。

9.加強PHP文字處理能力

前面這些都做了,還是不湊效,WSoD尚未解決,則可以嘗試另一種技巧。在極少數情況下,死亡白屏是由於頁面或文章內容特別長導致。

在這種情況下,您可以嘗試通過增加回溯和遞迴限制來調整站點上的PHP文字處理功能。為此,請將以下程式碼貼上到wp-config.php檔案中:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/* Trick for long posts /
ini_set('pcre.recursion_limit',20000000);
ini_set('pcre.backtrack_limit',10000000);
/* Trick for long posts / ini_set('pcre.recursion_limit',20000000); ini_set('pcre.backtrack_limit',10000000);
/* Trick for long posts / 
ini_set('pcre.recursion_limit',20000000); 
ini_set('pcre.backtrack_limit',10000000);

新增此程式碼後,儲存更改。然後重新整理站點以檢視其是否正在執行。

小結

WordPress死亡白屏看似另站長手足無措的故障,但只要站長了解該故障的原因及解決方法,就無需過於擔憂。

在大多數情況下,簡單的外掛和/或主題檢查即可解決WSoD問題。更加熟悉WordPress除錯模式,在很多時候可以幫助解決大部分的WP問題。

評論留言