WordPress環境でプラグインのスクリプトを修正しようとしていたら、WordPressの管理画面、もちろん、ページ自体にもアクセスできなくなりました。正確には真っ白な画面になりました。「ああ、これが噂の真っ白か!」と思いつつも超焦りました。そんな体験と対応について書いていきます。
1. ”真っ白”ってどういうこと?
”真っ白”というのはブラウザで見て”404などのエラー表示も無く、本当に何も表示されず、真っ白な画面になる”ということです。
ページが表示されないだけでなく、管理画面も表示されなくなります。(両方”真っ白”になる)
真っ白な画面自体はCMS(WordPress)が出しているので、URLにアクセスされていることは認識されています。
スペシャリストの方はわかりませんが、私みたいな素人ではブラウザからは何もできなくなる状態です。
2. 何故”真っ白”になったのか?
Popular Postsで気になることがあって、スクリプト修正していました。
追記:2017/12/02
このWordPress Popular Postsのバグは4.0.13で修正されました。(祝)
これまで”真っ白”になったことが無かったので、スクリプトでエラーになっても、ページが表示されないぐらいで、管理画面まで”真っ白”になるとは思っていませんでした。ページ表示でエラーになっても、管理画面からまた直せばいいと思っていました。
「このスクリプトは動かないだろう」と認識したうえで、やってしまったので大反省しています。
管理画面まで真っ白だったことに気づいた瞬間に超焦りました。
3. どうやって修復したか?
サーバーにFTPで接続して、対象のファイルの記載を元に戻しました。
元に戻すことで、全てが復活したので、今回の”真っ白”の対応としては正しかったと思います。
5分かもっと短い時間だと思いますが、”はまとりねっと”を停止させてしまいましたが、あいにく”はまとりねっと”は常に接続者がいるほどアクセスは無いので、ほぼ無傷だったことが救いです。
4. 直ぐに修復できた理由
今回、即復旧できた理由は以下の3点だと思います。
- 編集していたファイル名を覚えていた
- 修正前のスクリプトをコメントで残していた
- 直ぐにFTPできる準備があった
とはいえ、今回は自分で起こした”真っ白”だったので、即対応できたものの、もう少し嫌な状況だったら泡吹いていたと思います。
5. もっと嫌な状況を想定してみる
いくつか嫌な状況を想定して対応案を考えてみました。
5.1. 修正したファイル名がわからない
何か修正したいたけれど、どのファイルを修正していたかがわからない、もしくは複数のファイルを修正していて、どのファイルが原因になっているかわからないケースです。
プラグインにしろ、テーマにしろ、大きな枠組みとしてはわかっているはずなので、例えば対象のプラグインのファイルを全て確認すれば、対象の箇所を見つけることが可能なはずです。
ただ、これだと時間がかかるので、エラーを出す設定にした方が良いように思います。
デフォルトでは”public_html/wp/”に存在する”wp-config.php”の以下の箇所を修正します。
/**
* 開発者へ: WordPress デバッグモード
*
* この値を true にすると、開発中に注意 (notice) を表示します。
~~~
略
~~~
*/
define(‘WP_DEBUG’, true);
※デフォルトの設定は”define(‘WP_DEBUG’,false);”です
※defineの記載が無ければ追加で記載します(上記はエックスサーバーで確認)
これで真っ白な画面にメッセージが表示されます。その中から、ERROR(error)を探せば、ファイル名やエラーの出ている行番号を確認できるはずです。
もう一つ、これは使用している(レンタル)サーバーにもよるかもしれませんが、サーバーのエラーログを確認できるなら、そちらの方が早いかもしれません。ちなみにエックスサーバーでは直ぐに確認ができます。今回のログもしっかり残っていました。
5.2. プラグインを入れた/アップグレードしただけ
プラグインを入れただけで”真っ白”になった場合です。
この場合はプラグインを外すしかありません。プラグインを外すというのはプラグインを削除すればOKです。
”public_html/wp/wp-content/plugins/”ディレクトリにプラグインのディレクトリが並んでいます。例えば、”WordPress Popular Posts”だとしたら”wordpress-popular-posts”というディレクトリがありますので、丸ごと削除します。より原因を明らかにしたければ、ダウンロードしてから削除します。
その後に前バージョンを入れなおすか、もうそのプラグインを止めるのかはその後の情報の集まり方にもよりますね。プラグイン自体に問題があればフォーラムやプラグインのコメントなどで騒がれるはずです。
5.3. 何もしていないのに”真っ白”になっていた
これ、困りますね。
考えられるのは以下のどれかなのだと思います。
- エラーが発生する箇所(スクリプト)を初めて通った
- 自分で修正した何か
- (レンタル)サーバー側で何か変更された
- ハッキングされて何か変えられた
とりあえず、”修正したファイル名がわからない”と同じ手順をとるのが良いと思います。エラーが起きているファイル名さえわかれば、それを含むプラグインを除外すれば回復するはずです。
”エラーが発生する箇所を初めて通った”可能性は極めて低いと思うのですよね。とはいえ、例えば、2000年問題のようなことはあり得るのかなとは思います。
サーバー側で例えばPHPのバージョンが変わったりすれば、動かなくなるプラグインもあるかもしれないので、何も変更していなくても”真っ白”があり得そうです。レンタルサーバーであれば、レンタルサーバーの情報の確認が必要です。
そして、一番怖いのはハッキングなので、身に覚えが無い修正だった場合、アカウント管理などを見直す必要はありそうです。
6. やっぱり準備も大切
起きてからのことは、頑張るしかないのですが、頑張るための下準備はあらかじめしておいた方が良いと思います。
ありきたりですが、以下のようなことは確認しておきたいです。
- バックアップ/リストアの手順、仕組みの確認
- ログ参照の方法の確認
- FTPアカウントの整備と利用方法の確立
- 作業をする際の自分に対する決め事
バックアップはレンタルサーバー側でやってくれているはずですが、私自身もあまりわかっていなかったりします。(反省点)
ログ参照に関しては、今回のケースでは出番がありませんでしたが、ログの確認ができることを覚えていたので、最低限はクリアしていました。
FTPは直ぐできるようにいつもしてあるので、これは良かったなと思っています。
後はテスト環境の準備ができれば、これが一番良いように思います。XAMPPで作れるなら作ってみようかなと考え中です。XAMPPは入っているものの、WordPressまで入れるのは手間がかかりそうですね。
追記@2017/11/17
バックアップはプラグインで取得するようにしました。UpdraftPlusです。
まとめ
”真っ白”は思ったよりも精神的なダメージが大きかったです。「うわっ!」ってなります。しかし、これも意外ですが、単純な復旧させるだけならそれほど難しくないなと思いました。
- 自分の環境について知っている(準備している)ことは大事
- 真っ白になっても慌てず、ログを確認
- 復旧はそれほど難しくないので慌てない
それでも、”真っ白”は心臓に悪いですね。