0%

正威網路行銷工作室,專注於基隆、台北與全台客製化網頁設計,提供專業 RWD 響應式、SEO 搜尋引擎優化、品牌形象設計與網站維護託管服務。

搜尋文章
聯絡資訊
地址基隆市仁二路 220 號 5 樓
追蹤我們

WordPress 出現 500 錯誤怎麼辦?「這個網站發生嚴重錯誤」的排查順序

WordPress 出現 500 錯誤怎麼辦?「這個網站發生嚴重錯誤」的排查順序 封面

早上打開網站,畫面只剩一行字:

這個網站發生嚴重錯誤。

或是一片白、顯示 500 Internal Server Error。網站上的客人都看不到內容,很容易慌。

500 錯誤的意思是「伺服器執行程式時出錯了」,大部分是某個外掛、佈景主題或設定檔出問題。這篇照最常見的原因排好順序,一步一步檢查。

先判斷是哪一種畫面

  • 「這個網站發生嚴重錯誤」:WordPress 自己攔截到的錯誤,通常是外掛或佈景主題的程式出錯。這種最好處理,WordPress 會幫你指出是哪一個。
  • 伺服器的 500 Internal Server Error 頁面(白底黑字、主機商的錯誤頁):WordPress 可能根本沒有開始執行,常見原因是 .htaccess 寫錯、檔案權限錯、PHP 設定有問題。
  • 502、503、504:不是程式寫錯,而是伺服器忙不過來或逾時,要找主機商看主機資源。

另外看一下後台進不進得去,只有前台壞還是全部壞,可以縮小範圍。

第一步:看 WordPress 寄來的通知信

WordPress 5.2 之後有「復原模式」:外掛或佈景主題造成嚴重錯誤時,會寄一封信給網站管理員的 Email,告訴你是哪一個外掛出錯,並附上一個特別的登入連結。

我們在測試網站放了一個故意寫壞的外掛,實際看到的流程是:

  1. 前台:顯示「這個網站發生嚴重錯誤。」,HTTP 狀態碼是 500。這時還沒有寄信。
  2. 有人打開登入頁或後台:畫面多了一句「請檢查網站管理員電子郵件收件匣以取得相關說明」,這時才寄出通知信。

也就是說,前台出錯不會寄信,要等有人進到登入頁或後台遇到錯誤,WordPress 才會寄。網站壞了沒收到信,先自己打開一次登入頁。

通知信的標題是「《網站名稱》通知:網站遭遇技術性問題」,內容會寫:

  • 是哪一個外掛或佈景主題出錯(例如「已啟用的其中一個外掛的錯誤(外掛名稱)」)。
  • 出錯的檔案、第幾行、錯誤訊息。
  • 一個進入復原模式的連結,1 天後失效。

點連結、登入之後,網站在你這個瀏覽器裡會暫停那個出錯的外掛,其他訪客看到的還是錯誤畫面。到「外掛」頁,出錯的外掛會用紅框標出來,寫著「網站進入復原模式期間,這個外掛無法正確載入並會遭到系統暫停」,下面有錯誤詳細資料。這時可以:

  • 按「停用」,先讓網站恢復正常,再去找外掛的更新或替代品。
  • 處理完後,點上方工具列的「結束復原模式」。

通知信要寄得出去

通知信寄到 設定 → 一般 裡的「網站管理員電子郵件地址」。如果這個信箱沒人在看,或主機根本寄不出信,就收不到。想另外寄到工程師的信箱,可以在 wp-config.php 加這一行:

PHP
define( 'RECOVERY_MODE_EMAIL', 'engineer@example.com' );

主機寄信不穩的話,建議設定 SMTP,做法可以參考用 Gmail 收發公司企業信箱:寄件(SMTP)設定。

第二步:打開錯誤記錄

沒收到信、或錯誤不是外掛造成的,就要看錯誤記錄。用 FTP 或主機的檔案管理員,打開網站根目錄的 wp-config.php,在 /* That's all, stop editing! */ 這一行上面加入:

PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
  • WP_DEBUG_LOG 設成 true,錯誤會寫進 wp-content/debug.log。重新打開出錯的頁面,再去看這個檔案的最後幾行。
  • WP_DEBUG_DISPLAY 設成 false,錯誤不會顯示在網頁上。錯誤訊息裡有主機路徑,不要讓訪客看到。

wp-content/debug.log 預設是網址打得開的,查完問題記得把這三行刪掉,並刪除 debug.log。或是把記錄寫到網站目錄以外的地方,WP_DEBUG_LOG 直接填檔案路徑就可以:

PHP
define( 'WP_DEBUG_LOG', '/home/你的帳號/logs/wp-debug.log' );

主機控制台(cPanel、HestiaCP、Plesk)通常也有「錯誤記錄」可以看,伺服器的 500 頁面(WordPress 沒開始執行的那種)要看這裡。

第三步:停用所有外掛

錯誤記錄指向某個外掛、或還是找不到原因,就先把外掛全部停掉:

  1. 用 FTP 或檔案管理員,把 wp-content/plugins 資料夾改名成 plugins-off。
  2. 重新打開網站。WordPress 找不到外掛資料夾,所有外掛等於停用。
  3. 網站好了,代表是某個外掛的問題。把資料夾名稱改回 plugins,到後台「外掛」頁,一個一個啟用,啟用到哪一個網站壞掉,就是它。

只懷疑某一個外掛的話,改那個外掛自己的資料夾名稱就好,例如 plugins/woocommerce 改成 woocommerce-off。

第四步:換回預設佈景主題

用同樣的方法,把 wp-content/themes 裡目前使用的佈景主題資料夾改名。WordPress 找不到佈景主題,會自動換成已安裝的預設佈景主題(例如 Twenty Twenty-Five)。所以平常最好留一套預設佈景主題不要刪。

網站因此恢復的話,問題就在佈景主題。最常見的是剛改過 functions.php:少了一個分號、括號沒有成對、同一個函式名稱宣告了兩次。在 functions.php 加程式碼的注意事項,可以看WordPress functions.php 實用程式碼整理。

第五步:.htaccess

伺服器直接顯示 500 頁面時,很常是 .htaccess 寫錯(例如加了主機不支援的設定):

  1. 把網站根目錄的 .htaccess 改名成 .htaccess-old。
  2. 網站能打開了,到 設定 → 永久連結,什麼都不用改,直接按「儲存設定」,WordPress 會重新產生一份乾淨的 .htaccess。
  3. 原本 .htaccess 裡如果有自己加的轉址、快取設定,再一段一段加回去測試。

.htaccess 的寫法可以看.htaccess 用法大全。

第六步:記憶體不足、PHP 版本

  • 錯誤記錄出現 Allowed memory size of ... bytes exhausted,就是記憶體不夠,處理方法請看WordPress 記憶體不足怎麼解決。
  • 主機商升級了 PHP 版本後網站壞掉,通常是很久沒更新的外掛或佈景主題不支援新版 PHP。可以先在主機控制台把 PHP 版本暫時切回舊版,讓網站恢復,再把外掛、佈景主題更新到支援新版的版本,最後切回新版。

都試過了還是不行

  • 重新上傳 WordPress 核心檔案:從官方下載同一個版本的 WordPress,覆蓋 wp-admin 和 wp-includes 兩個資料夾(不要動 wp-content 和 wp-config.php)。
  • 檢查檔案權限:資料夾一般是 755、檔案 644。
  • 把錯誤記錄的內容提供給主機商,請他們查伺服器端的記錄。

平常就做好的事

  • 每天自動備份,而且確定備份還原得回來。
  • 更新前先備份,一次不要更新太多個外掛,出問題才知道是哪一個。
  • 管理員信箱要是有人在看的信箱,網站出事時才收得到通知。

延伸閱讀

網站壞掉的時候,最需要的是有人知道怎麼查。正威網路行銷是 25 年經驗的基隆網頁設計工作室,網站管家年費包含每日備份、故障時協助還原,以及系統、外掛的更新,台北與全台客戶也歡迎來聊聊。

分享這篇文章

返回文章列表更多「Wordpress代碼教學」文章

發表留言

還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。

讓我們一起打造
您的專屬網站!