W3 Total Cacheでキャッシュが肥大化!?500エラーの対処法【WordPressプラグイン】
WordPressで作ってあるサイトが表示されなくて直して欲しいというサイト修正依頼が来たときの話です。
修正後なのでスクショはありません。
確認のためにまずやったこと
- 早速確認してみるとサイトが500エラーで開かない。
- 管理パネルも入れない。
- F12 でネットワークを調べてみるとindex.phpが反応してない
補足
WEBブラウザでF12を押すとデベロッパー昨日が出せるのでサイトのソースや反応速度など内部情報が確認できます。(以下スクショは適当に出したどっかのサイトです)
ひとまず疑ったのはサーバー側の要因も
500エラーもそうなんだけどエラーが返ってくる反応があまりに遅いので一瞬共用サーバー内で誰かが膨大なトラフィックを得ていたりメモリーを大量消費している人がいたり、はたまた自分のサイトが例えばphpmailerのマルウェアに侵されているんじゃないかとかよぎったので同時進行でサーバー側に調査してほしい旨を問い合わせしてほしい事をつたえて修正作業開始。
WordPressエラー時の対処法
はじめにWordPressがぶっ壊れたときに対処法のセオリーに従いやったこと
- プラグインをすべてOFFにする
- テーマをデフォルトに戻す
※今回は管理パネルにも入れないのでFTPから「wp-contents」→「theme」or「plugins」を操作、名前の変更で対処してみる
特に何も変化せず!
プラグインOFFにする際に「cache」というディレクトリを見つけていたのでもしやと思い確認するとキャッシュ系プラグイン「W3 Total Cache」を発見!
「cache」のディレクトリ内には2万個以上のファイルが格納されていることを確認
WEBブラウザから改めてNetworkを見てみるとjsファイルのエラーやキャッシュでエラーが出ている個所がいくつかあったので「W3 Total Cache」のキャッシュファイルが肥大化していることが原因であるとあたりを付けて、ひとまず作業に移る前にサーバーとデータベースのバックアップを取る。
バックアップを取り終え「W3 Total Cacheの削除」にうつる
WordPressのキャッシュ系プラグインはなかなか厄介でプラグインだけをただ消すだけでは治らない
書き換えられた「.htaccess」と「wp-config.php」を修正
以下4ファイルの削除
- advance-cache.php
- db.php
- object-cache.php
- w3-total-cache-config-preview.php
プラグイン「W3 Total Cache」削除
ここまですると「W3 Total Cache」の削除が完了する
確認してみたところまだ500エラーは改善されない。
ブラウザキャッシュを削除して更新しても変わらない・・・
もう一度FTPでファイルを見て回っていると他のキャッシュ系プラグインで追加されたであろうゴミファイルが点々と至る所にちりばめられているのを確認。
1つずつ消すのが面倒だったのでWordPressを手動アップデートする要領でWordPress本体を更新しようとするが不要ファイルの削除が目的だったので「wp-Contents」と「.htaccess」「wp-config.php」以外を削除してから最新版のWordPressを流し込む
ここでようやくエラーが解消されました。
クライアントに再度確認してもらったところカスタマイズした箇所が変更前に戻っているとのことだったのでスタイルシートとheader.phpやfooter.php、その他のページ等カスタマイズしていそうな各種ページの差分を取りカスタマイズ個所を洗い出しソースを修正して再度クライアントにチェックしてもらい修正完了となりました。
まとめ
キャッシュ系プラグインで特に「W3 Total Cache」はサイトの表示スピードを劇的に性能アップしてくれる優秀なプラグインではありますがメンテナンスが非常にメンドクサイプラグインなので自分で直せない人やあまり頻繁にメンテナンスしないようなサイトで使うのは避けたほうが良いかもしれません。
PS.
サーバー側からはその日のうちにWordPress側で読み込みが遅くなってると回答アリ