【WordPress】このサイトで重大なエラーが発生しました。への対処方法(リカバリーモード)

まとめ

プラグインが自動更新された後、「このサイトで重大なエラーが発生しました」と表示され、すべてのページにアクセスできなくなる問題が発生した。
管理者にリカバリーモードでログインできるページのURLが来たので、そちらからサイトにアクセスし、該当プラグインを無効化することで、ページが表示されるようになった。

 

問題が発生したことの認識

「サイトで技術的な問題が発生しています」というメールが届いた。
初めて見るメールだったので、サイトにアクセスしてみると、「重大なエラーが発生しました」という、同じく初めて見るメッセージのみになってしまっていた。

どのページも上記と同じになってしまい、ログインページにもアクセスできなくなった。

メールの受信順から、プラグインが更新されたことにより問題が発生してしてしまったのだろうということまでは分かった。

リカバリーモードでログイン

「サイトで技術的な問題が発生しています」というメールの本文を確認してみた。

こんにちは。

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

今回の場合、WordPress がプラグイン SiteGuard WP Plugin でエラーを捉えました。

まずはじめに、ご自分のサイト (https://juraku-software.net/) を開き、目に見える問題がないか確認してください。次に、エラーが発生したページ (https://juraku-software.net/xxxxxxxx) を開き、同様に問題がないか確認してください。

この問題をさらに調査するにはサーバーホストに連絡してみてください。

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

https://juraku-software.net/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を利用している(設定がすべて消えてしまったが…)。

今後の対策

難しい…

プラグインは常に自動更新にしておきたいので、こまめにメールチェックをするしかないかな。

あとは、問題が発生したときにダッシュボードにも行けなくなることが分かったので、FTPでアクセスできることを定期的に確認しておくくらいかな(普段は使わないので)。

【WordPress】Google Analytics Dashboard for WPからSite Kitへの移行

以前から「Google Analytics Dashboard for WP」プラグインを利用していたのですが、あるときから大半の機能が有料化し、さらに謎の通知が多くなったため使いにくくなってしまいました。

Googleが提供している「Site Kit」というプラグインを使うと、Google AnalyticsとAdSense、PageSpeed Insightsをまとめて表示することができるのでおすすめです。

移行したときの手順ですが、先にSite Kitをインストールして、ウィザードに従って設定。その後、Google Analytics Dashboard for WPを無効化するだけで簡単です。(しばらく使って問題がなければ完全にアンインストールします)

▼ページごとにアクセス数が表示されるようになります

 

【Web】OpenBugBountyからメールが来たときの対応

「juraku-software.net Security Vulnerability Notification | OBB-1717685 | Important」という件名のメールが突然届きました。(このページを記載している時点で問題は解消済みです)

メール本文はこんな感じです。

どうもセキュリティの問題があったらしく、それを知らせてくれたとのこと。
詳細を知るには、担当者にメールする必要があります。
送られてきたメールのレポートURLをクリックすると「Discovered and Reported by:」という項目のリンクをクリックすると担当者のメールアドレスが分かるので、英語で質問する(レポートURLと、Please bug descriptionみたいな英語だけ書けば大丈夫でした)。

対応しないまま放置すると、問題内容が公開されてしまうようなので早めに対応した方がよさそうです。

対応完了後、寄付を求められたのでせっかく調べてくれたので寄付しました(今回の問題はphpinfo.phpを残したままだったと何ともお粗末な内容でした・・・)

ちゃんと対応すればセキュリティの問題も解消され、外国の方ともメールできるいい機会なのでこのメールが来たら対応した方がよいでしょう。メールの返信も30分以内には返ってきました。

【WordPress】PHP7.1→7.3にVerUp後、デザインが大きく崩れた

問題

PHPを7.1から7.3にVerUp後、以下のようにスタイルが効かなくなってしまった。

原因調査

PHPをバージョンアップしたことで発生するようになったため、PHP側でエラーが発生していると推測。エラーを画面に表示するため、wp-config.phpに、define(‘WP_DEBUG’, true);を追加することにした(本当はだめだけど、調査のためだけだから。。。調査後にfalseにすればOK)

すると、以下のエラーが発生していることを確認。

Notice: Undefined index: function in /xxxxxxxxxx/wp-content/plugins/head-cleaner/head-cleaner.php on line 2899

導入しているHead Cleanerとの相性が悪い?様子。
取り急ぎ復旧するために、このプラグインを無効化した。

復活した!

根本原因は調べなければならないが、そもそも数年前に入れたプラグインが今も必要なのか微妙。定期的にプラグインの整理をしておいた方が、問題解決がしやすくなる。
(そもそも検証機が必要・・・)

 

【WordPress】Autoptimize導入効果(スコア46→56)

GoogleのPageSpeed Insightsにて、当サイトのモバイルの結果が悪かったため、Autoptimizeというプラグインを試してみました。

導入結果

Autoptimize適用前(モバイル:46、パソコン:88)

Autoptimize適用後(モバイル:56、パソコン:88)

 

プラグインを入れただけで、モバイルの数値は少し良くなりました。

他の紹介サイトでは、表示が崩れるなどの問題も報告されていましたが、当サイトでは問題は起きませんでした。

手軽に改善ができるのでおすすめです。

  • WordPress:5.2.3(2019/10/05時点)
  • レンタルサーバ:ロリポップ(ライト。PHP7.1)
  • Autoptimize設定:「JavaScriptコードの最適化:チェックON」、「CSSコードを最適化:チェックON」、「HTMLコードを最適化:チェックON」。
    これ以外の設定はプラグインの初期値のまま変更していません。

 

 

【WordPress】ソースコードをきれいに表示する方法(Crayon Syntax Highlighter→Code Prettifyへ移行)

「Crayon Syntax Highlighter」を使っていたが、C#のコメントやJavaScript自体が表示されないなどの不都合が多く発生するようになったため、今回移行を行った。

「Code Prettify」というプラグインをインストールして有効化後、「Crayon Syntax Highlighter」を停止すれば、これまで投稿していたpreタグで記載された表記はそのまま、Code Prettifyによりきれいにハイライト表示されるようになった!

【WordPress】メニューの編集で403エラー

ロリポップ上のWordPressにて、メニューの編集で保存しようとすると403エラーとなる。

ロリポップのセキュリティ→WAF設定から、対象サーバのWAFを無効にするとエラーが解消された。
設定が反映されるまで数分かかる。
※変更が終わった後は、WAFの設定を有効に戻した方が良い。

【WordPress】W3 Total Cache導入後、500エラー

W3 Total Cache導入後、大半のページが500エラー(500 Error CGI もしくは SSI が正しく動作していません。)になってしまう現象が発生しました。
プラグインを無効化しようとしても、ログインページが500エラーになってしまい何もできない状態となり、とても困りました。

環境:WordPress 4.7.1、ロリポップ

以下のサイトを参考に、FTPにて.htaccessのコメントアウトと、各ファイルをリネームしたところ、ログインページを含め500エラーが解消されました。ありがとうございます。
wpXレンタルサーバーでW3 Total Cacheが500エラーになる問題の解消方法、ピンチから脱出方法!

ただ、その後もダッシュボードに以下のエラーが出続けたため、記載されたパスのファイルもリネームしたところ、エラーが消え復旧しました。
W3 Total Cache Error: some files appear to be missing or out of place. Please re-install plugin or remove /xxxxx/wp-content/db.php.
W3 Total Cache Error: some files appear to be missing or out of place. Please re-install plugin or remove /xxxxx/wp-content/object-cache.php.

結局、よく原因が分からず。管理画面からプラグイン削除はできませんでしたが、今のところ問題なくサイト閲覧ができている状態ですので、様子を見ようと思います。

WordPressはプラグインを気軽に導入できてとても便利ですが、トラブルが発生した場合の解決方法を見つけるのは大変かもしれませんね。