WordPress 內部伺服器錯誤 (HTTP 500 Internal Server Error) 是一個常見的問題,當然這個錯誤不僅限於 WordPress,任何 web 程式都有可能出現這個內部伺服器錯誤。今天我們的重點放在 WordPress 程式上。下圖顯示的就是一個典型的 500 內部伺服器錯誤。

internalservererror

 

本教程將重點談到以下二個問題:

  • 500 伺服器錯誤的原因
  • 500 伺服器錯誤的解決辦法

1.500 伺服器錯誤的原因

這是一個比較頭痛的問題,因為其沒有返回任何資訊給 WordPress 網站管理員。導致發生這個問題的原因有幾種。首先 .htaccess 檔案 (php+mysql 環境) 的不標準化是導致這個錯誤的常見原因之一。有的 WordPress 網站管理員為了各種需要,在 .htaccess 檔案裡新增了很多東西或收到被駭客串改。再就是 WordPress 伺服器資源耗盡,這一方面是主機本身的限制而你的站點訪問徒增,另一方面是折騰了一些外掛導致的。然後就是函式的錯誤,有時我們在 functions.php 加入了錯誤的程式碼,最典型的莫過於引號沒有使用英文引號或程式碼不完整 (喜歡直接貼上程式碼的人員最易出現這個錯誤) 。

2. 如何解決 WordPress 內部伺服器錯誤

解決的辦法我們只有透過瞎子摸象的辦法,一個個的實驗進行排除。

2.1 排除 .htaccess 錯誤

方法是透過 ftp 登入到主機空間,把 .htaccess 檔案重新命名 .htaccess.bak 。現在嘗試登入 WordPress 後臺,如果能夠登入,則說明是此 .htaccess 檔案導致的內部伺服器錯誤。然後到設定-固定連結,設定一下固定連結,重新生成一個標準的 .htaccess 檔案。如果還是不能登入,說明可能不是這個導致的。不過暫時不要修改回來,以防是多重原因導致的。

2.2 增加 PHP 記憶體限制

這是大家比較頭痛的,在上傳影像或登入 WordPress,或安裝主題,或安裝外掛時都會遇到。而這些會可能直接導致伺服器內部錯誤。遇到這個問題就是要增加 PHP 記憶體限制。如果你能控制伺服器,在 php.ini 檔案裡找到

memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)

有的是 32M,把這個值修改為 128M

遺憾的是網站管理員往往不能控制這個,所以我們針對 WordPress 拿出最後的殺手鐧,為什麼這麼說,因為這個方法很有效,筆者使用這個方法解決了好幾個類似問題。

1) 新建的一個空白的檔案,命名為 php.ini 。

2) 開啟這個檔案,輸入:memory = 128M,如果這個不行使用 memory_limit = 128M 。

3) 把這個檔案上傳到/wp-admin/內,主意不是網站根目錄。

關於這個問題,詳情可閱讀:WordPress 十大常見錯誤之五: 記憶體錯誤。

2.3 重新命名外掛或主題

如果上面的能解決問題,說明有可能是某個外掛消耗了你的資源。所以接下來最好測試一下是那個外掛消耗了你的資源。故把原來的 plugins 命名為 plugins.bak,然後重新新建一個 plugins 資料夾。接下來逐步把原來的外掛一個個移到新建的目錄裡進行測試。

Plugin Performance Profiler (P3) 使用這個外掛可以測試你的外掛使用情況。

如果不是外掛問題,把目標轉移到主題上,命名原主題資料夾名為一個不同的名字,即可切換到預設主題。

2.4 覆蓋檔案

還有一種情況就是 WordPress 本身的系統由於某種原因出現了問題。這是被很多人忽略的。所以這個適合,下載同版本的 WordPress,重新覆蓋一下。不用擔心會修改你的內容,因為設定在資料庫裡,所以不會修改原來的設定,也不會丟失資料的。

2.5 聯絡主機商

如果上面的情況不能解決你的問題,最後就是聯絡你的主機商,看看是不是 CPU 值太高,如果是虛擬主機,是不是其它的網站佔用資源太多導致的。總之主機商那裡肯定可以獲得更多關於 500 伺服器內部錯誤的資訊。如伺服器日誌。