まとめ
プラグインが自動更新された後、「このサイトで重大なエラーが発生しました」と表示され、すべてのページにアクセスできなくなる問題が発生した。
管理者にリカバリーモードでログインできるページのURLが来たので、そちらからサイトにアクセスし、該当プラグインを無効化することで、ページが表示されるようになった。
問題が発生したことの認識
「サイトで技術的な問題が発生しています」というメールが届いた。
初めて見るメールだったので、サイトにアクセスしてみると、「重大なエラーが発生しました」という、同じく初めて見るメッセージのみになってしまっていた。
どのページも上記と同じになってしまい、ログインページにもアクセスできなくなった。
メールの受信順から、プラグインが更新されたことにより問題が発生してしてしまったのだろうということまでは分かった。
リカバリーモードでログイン
「サイトで技術的な問題が発生しています」というメールの本文を確認してみた。
こんにちは。
WordPress 5.2から、サイトでプラグインやテーマが致命的なエラーを発生させた場合にそれを検知してこの自動メールでお知らせする機能が追加されました。
今回の場合、WordPress がプラグイン SiteGuard WP Plugin でエラーを捉えました。
まずはじめに、ご自分のサイト (https://juraku-software.net/) を開き、目に見える問題がないか確認してください。次に、エラーが発生したページ (https://juraku-software.net/xxxxxxxx) を開き、同様に問題がないか確認してください。
この問題をさらに調査するにはサーバーホストに連絡してみてください。
もしサイトが壊れていてダッシュボードに正常に接続できない場合、WordPress には特別な「リカバリーモード」があります。これによりダッシュボードに安全にログインし、さらに調査をすることができます。
https://example.com/wp-login.php?action=enter_recovery_mode&rm_token=xxxxxxxxxx&rm_key=xxxxxxxxxx
サイトを安全に保つため、このリンクは 1日 で有効期限が切れます。ですが、心配なく。有効期限後にこのエラーが再度発生すれば新しいリンクをお送りします。
この問題を解決しようとする際、以下の情報を聞かれるかもしれません。
WordPress バーション5.7.1
現在のテーマ: Twenty Fifteen Child (バージョン 1.0.0)
現在のプラグイン: SiteGuard WP Plugin (バージョン 1.6.0)
PHP バージョン7.4.12
エラー詳細
===============
エラータイプ E_COMPILE_ERROR が /home/xxxxxxx/wp-content/plugins/siteguard/siteguard.php ファイルの 60 行目で発生しました。 エラーメッセージ: require_once(): Failed opening required 'classes/siteguard-disable-author-query.php' (include_path='.:/usr/local/php/7.4/lib/php')
本文のリカバリーモードのリンクをクリックすると、ダッシュボードが表示された。
ここで直近で更新されたプラグインを無効化することで、無事復旧できた。
直接の原因
SiteGuard WP Pluginのバージョンアップの不備のようだ。
現在は解消され、このサイトも以下の画像に書いてある通りの対処を行い、再びSiteGuardを利用している(設定がすべて消えてしまったが…)。
【追記】BackWPupでも発生
2022/11/16 22:11に、BackWPupプラグインがバージョン 3.10.0 から4.0.0へ自動更新された直後に同じエラーが発生した。
同じく、管理者ページにアクセスしたところ、「サイトで技術的な問題が発生しています」というメールが届いたので、本文中のリカバリーモードのリンクをクリックし、該当のプラグインを無効にしたところ、アクセスできるようになった。
→いつ問題が修正されるか不明だったので、「UpdraftPlus」というプラグインに乗り換えた。バックアップ時刻を指定できないけど、今のところ問題なくバックアップが取得できていそう。
今後の対策
難しい…
プラグインは常に自動更新にしておきたいので、こまめにメールチェックをするしかないかな。
あとは、問題が発生したときにダッシュボードにも行けなくなることが分かったので、FTPでアクセスできることを定期的に確認しておくくらいかな(普段は使わないので)。