WordPressの管理画面にログインしたら画面が真っ白に!
以前も書いたが、このブログはさくらインターネットで契約しているVPS上にCent OS + WordPressによって構成している。ある日、ブログを投稿しようといつものようにログイン画面にアクセス。
IDとパスワードを入れてログインしようとすると、正しいIDとパスワードを入れているのに画面が真っ白になって管理画面に移行しない。
直近で何かWordPressにプラグインを入れたり、設定をいじったりしてこうなったならわかるが、最近は特に変更は加えた記憶はないし、数日前までは普通に使えていた。あまりエンジニアとしてこんな言葉は使いたくないが「何もしてないのに壊れた」ような状況。
結論から言うと原因調査&対策により解決できたので、手順と原因をメモ。
※以下の操作を行ってサーバーに問題が発生しても責任は持てませんので、事前にファイルをバックアップするなどして対策してください
環境
さくらVPS
Cent OS 7.5(VPSにインストールしているOS)
まずはwp-config.phpでErrorコードの確認
原因がよくわからない状況で、推測で色々といじると余計ひどい状況になる可能性があるので、まずは素直に現在の状況を確認する。管理画面は真っ白になってログインできないが、ブログにアクセスすると普通に表示されるので、サーバー自体は生きている。
FTPソフトやターミナル(私はPuTTYを使っている)でサーバーに接続すると問題なく接続できたので、wp-config.phpを設定を変更して、管理画面にログインした時に真っ白になっている状態でエラーメッセージが出力されるようにする。
※デフォルトではエラーメッセージは表示されないようになっている。
まず、PuTTYなどのターミナルソフトでサーバーに接続する。FileZillaなどのFTPソフトを使っても良いが、ファイルを書き換えるときにwrite権限が必要なので注意。WordPressがインストールしてあるディレクトリのトップにwp-config.phpがあるはずなので、これを開いて編集する。wp-config.phpの中に
define(‘WP_DEBUG’, false);
という記述があるはずなので、これを
define(‘WP_DEBUG’, true);
に変えてやれば、エラーが発生した時にエラーメッセージが確認できるようになる。なお、この操作を実行すると管理画面だけでなく、ブログでもエラーコードの表示が有効になるため、ブログで普段見えていないエラーが見えてしまう可能性がある。エラーコードを確認したらすぐに戻すことをオススメする。
この状態で管理画面にログインしてみると、先ほどは真っ白だった画面に、以下のようなエラーメッセージが表示された。
WordPress データベースエラー: [Disk full (/***/***/#sql_***_*); waiting for someone to free some space…]
SHOW FULL COLUMNS FROM `wp_options`
ざっくり書くと「ディスクが満タンなので誰かスペース空けて~」とのことなので、どうもサーバーの空き容量が少なすぎて処理がうまくいっていないらしい。実際にターミナルから以下のコマンド
df -h
でディスク容量を確認してみたところ、契約しているVPSの容量25GByteのサイズを100%近く使っている。何かしらのファイルがサーバーの容量を圧迫しているのが原因のようだ。
サイズが大きいファイルの調査&消去
サイズが大きいファイルがどこにあるか検討がつかない場合は、lsコマンドやduコマンドなどを駆使して大きいサイズのファイルを探すことになる。このあたりに方法は載っている。ただ、私の場合は何となく検討がついた。
以前このブログでも紹介したが、BackWPupというプラグインで定期的にバックアップを取っており、現状だと1回のバックアップで1GByte程度の容量のファイルが作成される。このバックアップファイルがたまってサーバーの容量を圧迫しているのでは?と考えた。
BackWPupのバックアップファイルはWordPressの以下のディレクトリに保存されているので、まず以下の中身を確認。
wp-content/uploads/backwpup-******-backups
すると1GByteのzipファイルが2つほどあった。そういえば先日バックアップファイルは整理したばっかりだし、この程度なら一杯になることは無いはずだけどな…と思いつつも古い方のバックアップファイルをrmコマンドで消し、再びログインを試してみたところ、無事に管理画面にログインできた!やはりサーバーの空き容量が少なすぎたのが問題だったようだ。
しかし、BackWPupは2GByte程度しか使っていなかったため、どうも府に落ちない。他にも巨大なファイルが無いか調べてみる。
過去に使っていたプラグイン「All-in-One WP Migration」のファイルが残っていた
wp-contentディレクトリの中を見ていたら、見慣れない以下のディレクトリを発見。
/wp-content/ai1wm-backups
中を見てみると、10GByte以上のファイルが残っている!
以前、All-in-One WP MigrationというWordPressを丸ごと引っ越しできるプラグインを試してみた時にExportしたデータが残っていたようだ。プラグイン自体はもう削除しているのだが、エクスポート時に生成されたディレクトリはプラグインを消しても残っているらしい…。
この巨大ファイルが残っているところに、BackWPupの定期バックアップファイルが生成されて、容量が無くなってしまったという流れのようだ。こちらのディレクトリはもう不要なので削除して対策は完了。
同じような症状になった人の参考になれば。