[WordPress] 開啟 WordPress 除錯功能,用 WP Log Viewer 顯示錯誤訊息
最近家人的 WordPress 網站突然出現了問題,
新發表的文章都無法瀏覽,會出現 HTTP 500 Internal Error,
但先前發表的文章都沒有問題,非常的奇怪…
嘗試錯誤幾次之後,發現是外掛造成的,
只要把 Count Per Day 這個外掛關掉,就沒問題…
但這個外掛在我自己的 WordPress 網站也有使用,並沒有出現相同的問題,
而且在家人的網站上是某篇新文章之後才會有問題,
著實難以理解…
懷疑是 Count Per Day 外掛可能遇到某個狀況會有 bug,
像是超過某個文章數、遇到某個特定字詞、超過某個關鍵字數目…等等。
HTTP 500 Internal Error 如果可以看到錯誤訊息的話,
應該問題會好找的多~
研究了一下,開啟 WordPress 除錯功能並不算困難,
記錄一下吧~
1. 開啟 WordPress 除錯功能
用 gcloud ssh 連上 Google Cloud 上的 Bitnami WordPress 站台,
打開 /opt/bitnami/apps/wordpress/htdocs/wp-config.php,在前面加上這幾行:
define('WP_DEBUG', true); define('WP_DEBUG_DISPLAY', false); define('WP_DEBUG_LOG', true); define('SAVEQUERIES', true);
這四行設定會開啟除錯功能,將資訊寫至 wp-content/debug.log 檔案,
同時會將 SQL 的查詢也記錄下來,方便除錯。
不過要注意 SAVEQUERIES 可能會比較耗系統資源,
除錯完畢記得要把它關掉~
後註:偶爾會遇到 debug.log 檔案無法產生的問題,
可以執行下面指令:
cd /opt/bitnami/apps/wordpress/htdocs/wp-content sudo touch debug.log sudo chown bitnami:daemon debug.log sudo chmod ug+w debug.log
2. 執行造成錯誤的外掛
這邊就看是哪個外掛造成錯誤,再去執行一次就好了。
不過問題也有可能是在外掛載入時出現,
因此也可以試著停用再啟用外掛,看看會不會有錯誤出現。
3. 檢視錯誤訊息
錯誤訊息會寫到 wp-content/debug.log,
在 Google Cloud 的 Bitnami WordPress 上,
路徑就是 /opt/bitnami/apps/wordpress/htdocs/wp-content/debug.log~
你可以 SSH 進 VM 後,直接查看這個 debug.log 檔案,如:
testuser@wordpress-multisite-1-vm:/opt/bitnami/apps/wordpress/htdocs/wp-content$ tail debug.log [12-May-2018 23:39:03 UTC] PHP Warning: Illegal string offset 'height' in /opt/bitnami/apps/wordpress/htdocs/wp-content/themes/ribosome/image.php on line 27 [12-May-2018 23:39:03 UTC] PHP Notice: Uninitialized string offset: 0 in /opt/bitnami/apps/wordpress/htdocs/wp-content/themes/ribosome/image.php on line 27 [14-May-2018 01:33:03 UTC] WordPress 資料庫錯誤:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''wp_blogs'' at line 1 由指令 SELECT blog_id FROM 'wp_blogs' 引發,錯誤來自 require('wp-admin/plugins.php'), activate_plugin, do_action('activate_count-per-day/counter.php'), WP_Hook->do_action, WP_Hook->apply_filters, CountPerDayCore->checkVersion [14-May-2018 10:36:55 UTC] PHP Notice: Undefined index: HTTP_HOST in /opt/bitnami/apps/wordpress/htdocs/wp-content/sunrise.php on line 10 [14-May-2018 10:36:55 UTC] PHP Notice: Undefined index: HTTP_HOST in /opt/bitnami/apps/wordpress/htdocs/wp-includes/ms-settings.php on line 57
也可以安裝 WordPress 外掛,像我裝的是 WP Log Viewer,
裝好之後,就可以直接在 WordPress 介面上看到錯誤訊息:
使用 WP Log Viewer 的話,如果多做一些設定,
就可以在 WordPress UI 上直接開關除錯功能。
不過我懶得弄,就是 SSH 進機器直接去改 wp-config.php 囉~
藉由錯誤訊息,我們可以知道有個存取資料庫的問題,
這樣子就能繼續往下追問題了~
(但目前我還沒找到問題的真正原因就是了….)
參考資料:
How to Fix the 500 Internal Server Error on Your WordPress Website