公開日:

サイトヘルスで「バックグランド更新が想定通りに動作していません」と致命的な問題が表示された【解決手順】

ブログ記事内に広告リンクを含む場合がございます。

こんなお悩みを解決します。

  • WordPressのサイトヘルス機能を使ったら「バックグランド更新が想定通りに動作していません」と表示された

お客様より連絡をいただき、トラブルシューティングした方法を実例で紹介します。
 

「バックグランド更新が想定通りに動作していませんの解決手順

今回問題が発生した構成です。

  • レンタルサーバー:エックスサーバー X10プラン
  • テーマ:自作テーマ
  • WordPress:最新バージョンを利用中(5.3.2)
  • コアファイル(wp-adminや、wp-includes):カスタマイズ無し
  • PHP:最新バージョンを利用中(7系)
  • プラグイン:多数利用中(プラグインファイルのカスタマイズ無し)
  • 過去にマルウェア感染有り

 

サイトヘルスの結果

サイトヘルス機能を使ったら、致命的な問題が1件、お勧めの改善が1件表示される

致命的な問題エラーの詳細

バックグラウンド更新は使用中の WordPress のバージョンにセキュリティ更新がリリースされた際、自動更新できることを保証します。

エラー プラグインは wp_version_check() を無効化してアップデートを防ぎました。
OK バージョン管理システムは検出されませんでした。
OK この WordPress サイトでは更新の実行の際に FTP 情報が必要となりません。
OK すべての WordPress ファイルが書き込み可能です。

 

OK以外の項目「エラー プラグインは wp_version_check() を無効化してアップデートを防ぎました。」が問題です。

wp_version_check()って何だ?

「wp_version_check()はWordPressの関数で、新しいバージョンのワードプレスがあるかを確認するものです。新しいバージョンが公開されると、ダッシュボード上に以下のような更新通知が表示されます。

WordPress5.3.2が利用可能です!更新してください。

標準的に表示される通知ですが運用上の都合により、この通知を非表示にすることもできます。
複数人の管理者権限で運用しているケースで、事前検証無しにうっかり更新してしまうことを防止するといった目的です。

今回の事例では、サイトの管理者権限アカウントを運用しているのは一人のユーザーとのこと。
wp_version_check()関連については一切変更はしていないことを確認しました。

ここからの検証作業について

※ここからの作業はサイトに影響が出ます。
プラグインを停止することでサイトの機能が一部停止することになります。クライアントのサイト等、ダウンタイムが許されない作業者の方は、有効化しているテーマ・プラグインをコピーした検証用にサイトを作成し、テストサイト上でトラブルシューティングを行いましょう。

検証サイトの作成例

  1. 新規にワードプレスをインストール(本番環境と同じバージョンのワードプレスを使いましょう)
  2. テーマを設置
  3. プラグインを設置
  4. 投稿や固定ページのデータは不要です(特殊なカスタマイズをしていない限り)

 

エラー内容的にDB内に保存されている情報は関連がなさそうなので、サイトのフル構成は使いません。
All-in-One WP Migrationプラグイン等の引っ越しプラグインは使いません。

本番環境のサイトから、テーマとプラグインをダウンロードしてテスト環境にアップロードし有効化しましょう。FTPを使うのが面倒な人は、管理画面からテーマとプラグインをダウンロードしましょう。以下に簡単な方法をまとめてあります。

WordPressサイトにあるテーマ&プラグインをダッシュボードからダウンロード可能にしてくれるプラグイン

 

いざ検証です。

プラグインを1個ずつ停止してみる

エラー内容に書いてある通り、有効化しているいずれかのプラグインがwp_version_check()を無効化している可能性があります。どのプラグインが問題の原因かを特定します。

  1. プラグインを上から順番に一つ停止します(全部ではありません)
  2. プラグインが停止出来たら、サイトヘルスでチェックを行います
  3. エラーが改善したかを確認します
  4. エラーが出ている場合、停止したプラグインが原因ではありません
  5. 停止したプラグインを再有効化しましょう(テスト環境であれば、最有効可する作業は必須ではありません)
  6. 次のプラグインを停止し、再びサイトヘルスからチェックを行っていきます

 

この流れで、致命的な問題のエラーが消えるまでプラグインを停止していきます。作業中にエラーが消えれば、原因のプラグインが特定できたことになります。

原因のプラグインについては停止して運用を行うか、最新バージョンがないかを確認しましょう。既に最新バージョンを利用していて、運用に欠かせない場合は以下の対応を行います。

  1. 該当プラグインを削除、最新バージョンファイルを再度インストールし有効化(マルウェアに感染している可能性があるからです)
  2. プラグインの開発者に連絡する

ちなみに今回のお客様はプラグインが原因ではありませんでした。
プラグインを停止しても致命的な問題エラーが消えない場合は、テーマを確認します。

 

テーマに問題がないかを確認する方法

エラー内容的にプラグインかと思いきや、テーマが問題の原因となっている可能性があります。プラグイン同様に、有効化しているテーマに原因がないかを特定していきます。

運用中のサイトのダウンタイムが許容できない場合は、検証サイト上でテーマの切り替えテストを行いましょう。

  1. サイトに適当なテーマをインストールする(WordPress公式サイトからテーマをダウンロードしましょう)
  2. テーマを、別のものに切り替える
  3. サイトヘルスでチェックする
  4. エラーが表示されたかを確認する

検証用に有効化したテーマに不具合があると、今回の障害切り分け作業の意味がなくなってしまいます。
WordPress公式チームが提供しているデフォルトテーマを使いましょう(例:Twenty NineteenやTwenty Twenty等)。

今回のお客様サイトでは、テーマをデフォルトテーマに切り替えた後エラーが消えました。

つまり自作テーマが致命的な問題の原因でした。

 

テーマがwp_version_check()が止めている?

テーマにあるwp_version_check()を無効化しているファイルを特定する必要があります。

関数系の記述といえばfunctions.phpです。テーマ内のfunctions.phpを確認しwp_version_check()に関する記述があるかを確認しましょう。

以下のような記述がないかを確認しましょう。これらはWordPressの更新をストップするコードです。

更新をチェックする関数

  • wp_version_check
  • automatic_updater_disabled

 

今回の事例では問題のコードはありませんでした。

テーマが原因かつ、automatic_updater_disabledがfunctions.phpにない場合

テーマ内で原因を特定します。

  1. テーマ内にあるfunctions.php以外のファイル
  2. functions.phpの可能性

①テーマ内にあるfunctions.php以外のファイル

先ほどの更新を無効化する関数がfunctionss.php以外のファイルに記載していないかを確認します。
パソコンにテーマをダウンロードして、テキスト検索しても良いですし、特定の文字列を見つけるプラグインを使っても構いません(例:String locator)。

ちなみに今回の事例ではfunctionss.phpにも、その他のファイルにもWordPressのアップデートを無効化・非表示にするコードは見当たりませんでした。

②functions.phpの可能性

以前マルウェアに感染したことを頼りに再度functions.phpを確認しました。
よく見ると、functions.phpの先頭に「赤い点」があります。

テーマエディター上で赤い点を選択し削除し、「保存する」を試みるとエラーが表示されファイルの編集をすることが出来ませんでした。
エラー内容は「何かうまくいかなかったようです。変更が保存されていないかもしれません。」です。

このエラーはレンタルサーバーや、プラグインのWAF。またはファイルの文字コードの問題により発生することが多い症状です(もし同じエラーで苦しんでいる方がいれば、以下に対応方法まとめておきましたので参考にしてください)。

 

【解決】WPエラー「何かうまくいかなかったようです。変更が保存されていないかもしれません。手動で修正し、FTP 経由でファイルをアップロードすることもできます」

 
functions.phpファイルの編集を可能な状態にした後、ファイル先頭にある赤い点を削除したところ、今回のサイトヘルスの警告が消えました。いまだに謎な事象です。functions.phpに記述のあるカスタム投稿などの他の関数については問題なく動作していましたので、ファイル自体が完全に無効化していた訳ではありません。
 

サイトヘルスのまとめ

サイトヘルスはWordPress5.2から追加された新機能です。正直あまり利用したことがありませんでした(汗)。

今回トラブルを抱えたお客様の対応ということで、改めてサイトヘルスのチェック機能について調べる良い機会になりました。
有効化していないテーマの削除、停止中のプラグインの削除の停止等、仮にエラーが出ていても、すぐに対応の必要のないものもあるようです。

テーマを切り替えたタイミングや、ワードプレスのバージョンアップ後等、時間に余裕がある際にサイトヘルス機能を使ってサイトの安全性を検証してみましょう。


人気記事 初心者でも可能なSEO対策って何?


人気記事 【ゼロから始める】副業ブログで月5万円を稼ぐ!当社スタッフが試してみた方法と成果を公表


この記事を書いた人
うくさ

うくさ IT業界歴18年です。当カスタマイズネット所属エンジニア。
ワードプレス、シスコシステムズ社製ネットワーク機器担当。


この記事の関連記事



新着コラム