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

本教程將重點談到以下二個問題:
- 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 服務器內部錯誤的信息。如服務器日誌。