プラグインを更新したらサイトがフリーズ!リカバリーモードとか再有効化とか…

投稿日:2019/6/13 更新:2020/12/12 コメント 1件 ワードプレス , , , , , , ,


ワードプレスのプラグインの更新したら色々とトラブったので時系列に記載します。ことの発端はEWWW Image Optimizerの更新のお知らせでした。

 

 

「EWWW Image Optimizer」の更新失敗!

2019年6月12日 午後11時51分頃、「hitfilm…?」というサイトの管理画面に久しく訪れるとWPのプラグイン「EWWW Image Optimizer」の更新のお知らせがあったので何の気なしに更新ボタンをクリックしたら下記のようなメッセージが表示されました。

更新失敗: 500 Internal Server Error Internal Server Error 
The server encountered an internal error or 
misconfiguration and was unable to complete your request. 
Please contact the server administrator at info@coreserver.jp 
to inform them of the time this error occurred, 
and the actions you performed just before this error. 
More information about this error
 may be available in the server error log.

500内部サーバーエラー内部サーバーエラーサーバーで
内部エラーまたは設定ミスが発生したため、要求を完了できませんでした。 
このエラーが発生した時間、およびこのエラーの直前に実行した操作については、
info @ coreserver.jpのサーバー管理者に連絡してください。 
このエラーに関する詳細情報は、サーバーエラーログにあります。

管理画面自体は表示されているのでことの重大さにはこの時は分からなかったんですが、サイトを開くと以下のようなメッセージが表示されてアクセスできなくなっていました。Firefoxでアクセスしてみるがやっぱりダメ。

Briefly unavailable for scheduled maintenance.
Check back in a minute.

定期メンテナンスにはしばらく使用できません。
しばらくしてからもう一度確認してください。

グーグル chrome のディベロッパーツール(Ctrl + Shift + I)で確認すると以下のようにページそのものが生成されていない感じで503エラーが表示されていました。

 

 




「.maintenance」を削除する

エラーで表示されたメッセージで調べたら解決法がすぐに分かりました。

ワードプレスのテーマ等を更新すると一時的にメンテナンスモードになるのは使っている方はご存知だと思いますが、その状態から抜け出せなくなった時に表示されのが下記のメッセージのようです。尚、日本語の場合は「現在メンテナンス中のため、しばらくの間ご利用いただけません。」と表示されるようです。

メンテナンスモード時に一時ファイルの「.maintenance」というファイルが生成されて更新が終わると通常は削除される筈なんですが何らかのトラブルで削除されずに残っていると今回のような事態になるそうです。更新中に何かするとこのようなことになることがあるらしいですが特に何もしてなかったんですけどねぇ。

そんな感じなのでそのファイルを削除してやるとトラブルが解消することが多いようです。下図はFTPソフト「FileZilla」をキャプチャしたものです。

ただ、それをやる前に何となくディベロッパーモードの時にしかできない「キャッシュの削除でハードの再読み込み」をやってみたくなったのでやってみました。

するとなんと回復しました…。(・_・)エッ….?

一応、回復したんですが「.maintenance」というファイルも削除しておきました。

因みに「.maintenance」を開いたら以下のようなphpと謎の数字が書かれていました。

<php $upgrading = 1560351108; ?>

 

 

[おまけ] コアサーバーで「.maintenance」を削除する方法

今回はFileZillaから「.maintenance」を削除したので利用してないんですがコアサーバーからファイルにアクセスして「.maintenance」を削除する方法も記載しておきます。

コアサーバーのダッシュボードにログインし、「サイト設定」を開き、該当するサイトのアクションというところにある雲のアイコンをクリックします。

表示設定によっては下図のようになっていると思います。

「net2ftp」というWebFTPクライアントによってファイルにアクセスできるようになるので該当するファイルを探し出して削除します。

 

 




ダッシュボードにアクセスできず

直ったとひと安心してたんですがワードプレスの管理画面であるダッシュボードにアクセスしようとしたら以下のようなメッセージが表示されてアクセスできませんでした。

サイトで技術的な問題が発生しています。
サイト管理者のメールを確認して指示に従ってください。

 

 

ワードプレスから頼もしいメールが届く

WordPress 5.2から、サイトでプラグインやテーマが致命的なエラーを発生させた場合にそれを検知してこの自動メールでお知らせする機能が追加されたそうで以下のようなメールが届きました。

差出人 WordPress <wordpress@edit-anything.com>

   件名 [hitfilm...?] サイトで技術的な問題が発生しています

エラーが発生した詳細もありがたいですがそれなんかよりめっちゃ頼りがいのあるメールでちょっと感動しました。

もしサイトが壊れていてダッシュボードに正常に接続できない場合、
WordPress には特別なリカバリーモードがあります。
これによりダッシュボードに安全にログインし、
さらに調査をすることができます。

(中略)

サイトを安全に保つため、
このリンクは 1日 で有効期限が切れます。
とはいえご心配なく。
有効期限後でもこのエラーが再度発生すれば
新しいリンクが送られてきます。

 

 




特別なリカバリーモード

メールの書かれたエラーが発生したページへのアクセスは出来なかったので有効期限はあるものの特別なリカバリーモードというものがどんなものか試したかったのでリカバリーモードを使ってみました。

メールに書かれたリンクをクリックすると「リカバリーモードを初期化しました。ログインして継続して下さい。」とのメッセージとともに見慣れたログイン画面が表示されました。

ログインするとこれまた見慣れたダッシュボードとはちょっとだけ異なっていて右上に「リカバリーモードを終了」というボタンがあり、以下のようなメッセージが表示され、エラーの原因となったプラグインは”正しく読み込めませんでした”とインストールされないままとなっていました。

現在、リカバリーモードです。
テーマまたはプラグインにエラーがあるかも知れません。
リカバリーモードを終了するにはログアウトするか
「終了」ボタンを押してください。

1件以上のプラグインが正しく読み込めませんでした。
プラグイン画面から詳細の確認と変更が可能です。

取り敢えずプラグイン画面へ移行するとメールに書かれていたものと同じ内容のエラーとサイトが停止した理由が書いてあり、プラグイン名の下には初めて見る「再有効化」というボタンがありました。

このプラグインは正常なロードに失敗したため、
リカバリーモード中に一時停止されました。

プラグインの「EWWW Image Optimizer」を停止させてリカバリーモードを終了し、サイドダッシュボードにアクセスすると無事にアクセスできました。

ただ、プラグインを有効化したらまた以下のメッセージが表示されてアクセスできなくなり、すぐにワードプレスからリカバリーモードへのリンクが記載されたメールが届きました。

サイトで技術的な問題が発生しています。
サイトの管理者のメールを確認して指示に従ってください。

再度、リカバリーモードに入って今度は「再有効化」してみましたが、また同じようになってしまったので、またまたリカバリーモードに入って今度は一旦プラグインを削除してから再インストールするとエラーのループを止めることができました。

 

 

致命的エラー回復モード -Fatal Error Recovery Mode

リカバリーモードはWordPress 5.2から採用されたそうですがこの機能がなかったらおそらく真っ白な画面になって復旧までにもっと時間が掛かっていたと思うのでタイムリーな機能でホント助かりました。

ワードブスを初めて約2年ほど経ちますがプラグインの更新でこんなことになったのは初めてです。今度からプラグインの更新と言えどもアクセスの少ない時間帯に更新することを肝に銘じておきます。

 

 

▼参考サイト

WordPressのアップデート中のメンテナンス画面で固まった時の解除法

 

1 件のコメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です