
先日、このような相談を受けました。

サイト自体は表示されるし、管理画面も表示はされるのだけども、
記事の「更新」ボタンをクリックすると500エラーとうい画面が表示されて、正常な更新ができなくなってしまった。
同じような状況に陥ってしまった方のために、今回私が行った調査・調整を備忘録として残したいと思います。
目次
500エラーとは
まず、500エラーとはどういったエラーなのかをみていきましょう。
500エラー(Internal Server Error)は、簡潔に言うと、「サーバーの内部で何らかのエラーが生じている」ということを伝えるメッセージです。
このエラーを引き起こす原因として、
- CGIの誤作動(パーミッションやパスの設定ミスを含む)
- サーバーのスペック(メモリ、CPUなど)上限オーバー
- .htaccessファイルの設定ミス
- PHPプログラムの記述ミス
といったことが挙げられます。
500エラーが発生した時の原因調査方法
500エラーの原因と言われる上の4つから順に調査していきました。
設定ファイルの見直し
まずは、各ディレクトリやファイルのパーミッションを確認しました。
今回、以前は問題なく更新できていたものが急に更新できなくなったとのことだったので、既存のWordPress構成ファイルのパーミッションやパスは正常であると考えられます。
一応、「.htaccess」「wp-config.php」ファイルのパーミッションを確認したところ、「.htaccess」は606、「wp-config.php」は600なので特に問題ありませんでした。
また、Basic認証を行なっているサイトだったので、パスワードファイルのファイルパスも確認しましたが問題ありませんでした。
PHPの誤りの可能性について
今回、表示は正常にできていることから、PHPの記述には誤りはないと言えるでしょう。
(WordPressの場合、PHPに記述誤りがあると次のようなエラー画面が表示されます。)
負荷分散設定の見直し
このサイトでは負荷分散のためにPHPのバージョンをPHP7にしたり、キャッシュプラグインの利用など、各種負荷分散設定を行なっていましたので、一応、最新のPHP推奨バージョンへの移行とデータベースのクリーンアップなど、一通りの負荷分散設定を見直しました。
しかし、これでは改善はされませんでした。
サーバー負荷状況をSSH接続で確認
次に、もうサーバー内部を見た方が、現状何が起きているかが把握しやすいと思い、サーバー内部状況を調べてみました。
サーバー内部の状況を知るためには、ターミナルを使ったSSH接続を行い、主に「top」コマンドでCPUやメモリの使用率を調べました。
エックスサーバーをお使いの方は、SSH接続の方法とコマンドの紹介を以下の記事で行なっていますので、ぜひ参考にしてみてください。
他のサーバーをお使いの場合でも、SSH接続対応のサーバーであれば、サーバー会社が発行している運用マニュアルに沿ってSSH接続を行うことができれば、サーバー内部の状況を確認することができます。
調査の結果、更新ボタンをクリックした前後で特に異常な数値は見受けられませんでした。
相性問題の調査
上記の考えられる調査の結果、特段異常が見受けられなかったため、残る可能性としては「WordPressシステム」「使用テーマファイル」「プラグイン」間の相性問題が疑われました。
直近で正常に更新作業を行なっていた時から、「WordPressシステム」「使用テーマファイル」にはアップデートを加えて居なかったので、プラグインが怪しい、という結論に至りました。
まずは一旦全てのプラグインを停止させたところ、500エラーが解消され、更新ができることを確認しました。
ここからは地味ですが、1つ1つのプラグインを順番に有効にしていき、原因となるプラグインを追求していきました。
500エラーを引き起こした原因プラグイン
結論から言うと、500エラーを引き起こした原因プラグインは、「W3 Total Cache」というキャッシュプラグインでした。
このプラグインは、ページキャッシュ、データベースキャッシュ、オブジェクトキャッシュ、ブラウザキャッシュなどを細かく設定してキャッシングできる便利なプラグインではあったのですが、以前からたまに動作不良を起こしているプラグインでもありました。
対処方法
「W3 Total Cache」が500エラーの原因ということを受け、ついにキャッシュプラグインの乗り換えを行なって対応することに決定しました。
乗り換えたキャッシュプラグインは、「WP Fastest Cache」。
ページキャッシュ、ブラウザキャッシュ、CSSやJSの統合といったことができるシンプルで軽量なプラグインです。
日本語にも対応しているのが嬉しいですね。
結果
「WP Fastest Cache」プラグインに乗り換えた結果、500エラーは解消され、スムーズにWordPress記事投稿を行っていただけるようになりました。