photo by はむぱんさん
サイトヘルスステータス がWordpress 5.2から導入されました。この機能はWordpressの解消すべき問題点を一覧にして表示してくれます。この問題点にはプラグインも関係していたので、備忘録として、表示された問題点を解消する方法をいくつか紹介します。今後、新たに生じた問題も追加していく予定です。
はじめに
WordPressを更新し、ダッシュボードを見てみると、見慣れないものが表示されていることに気付きました。
「サイトに重大な問題があります。」というメッセージに驚いて、「サイトヘルス画面」のリンク先をクリックしました。サイトヘルスステータスを確認すると、いくつかの項目が表示されていました。
利用しているテーマやプラグインの更新、不要なテーマやプラグインの削除は特に問題なく実行できました。しかし、それ以外の問題の中には、単にテーマやプラグインの更新や削除だけでは解消しない問題も複数ありました。これらの問題を解決する場合、Wordpressを操作するだけではなく、サーバーやファイルの操作が必要になります。そこで、今回、今後の備忘録として、実際に自分のサイトヘルスステータスに表示された問題とその解消方法をまとめることにしました。
このサイトは、さくらインターネットのスタンダードプランで運営されています。Wordpressのテーマやプラグイン以外の問題は、主にさくらインターネットのサービスコントロールパネル(以下、SCP)を操作して解消します。もし、さくらインターネットでWordpressを利用していて、サイトヘルスステータスに問題があった場合、ひょっとしたら問題解消の手掛かりになるかもしれません。
パフォーマンス
パフォーマンスに関する問題は、サイトの表示速度にも影響する場合があります。サイトの表示速度が遅い場合、訪問者の離脱率を上げることに繋がります。このため、パフォーマンスの問題は可能な限り解消した方が良いと思います。
REST API でエラーが発生しました
REST APIでエラーが発生している場合、以下のようなメッセージが表示されます。
REST API は WordPress や他のアプリケーションがサーバーと通信する手段の1つです。たとえばブロックエディター画面は、投稿や固定ページの表示や保存に REST API を使用しています。
REST API リクエストはエラーのために失敗しました。
エラー: cURL error 28: Operation timed out after 10042 milliseconds with 0 bytes received (http_request_failed)
当サイトでこのエラーが出る原因は以下のプラグインでした。
- WordPress Flash Uploader
問題の解消法としては、上記プラグインを削除する以外にありませんでした。
サイトでループバックリクエストが完了できませんでした
サイトでループバックリクエストが完了できなかった場合、以下のようなメッセージが表示されます。
ループバックリクエストは予約イベントの実行に使用されます。またテーマやプラグインの組み込みエディターでは、コードの安定性の確認に使用されます。
サイトへのループバックリクエストは失敗しました。現在、依存する機能は想定どおりに動作していません。
エラー: cURL error 28: Operation timed out after 10020 milliseconds with 0 bytes received (http_request_failed)
当サイトでこのエラーが出る原因は以下のプラグインでした。
- WordPress Flash Uploader
- Slimstat Analytics
問題の解消法としては、上記プラグインを削除する以外にありませんでした。Slimstat Analyticsに関しては、当サイトではエラーが出力されました。しかし、テーマやプラグインの動作確認のために作った他のサイトではエラーが出力されませんでした。
この原因として、まず、当サイトはサブディレクトリ(WordPressアドレス:https://www.tnrsca.jp/subdirectory)にWordpressをインストールしています。しかし、トップページをドメイン直下のURL(サイトアドレス:https://www.tnrsca.jp/)で表示されるように設定しています。動作確認用サイトはこの設定をしていないので、恐らく、これがSlimstat Analyticsをインストールしている場合にエラーが起こる原因と思われます。問題が解消されない場合は、Slimstat Analyticsの更新を待つか、削除する以外に解消方法はないかもしれません。
使用中のPHPバージョンは古すぎます
使用中のPHPバージョンが古い場合、このメッセージが表示されます。この場合、PHPをバージョンアップする以外にこの問題は解消されません。さくらインターネットでは、サーバーコントロールパネルからPHPをバージョンアップできます。
さくらインターネットには、現時点で旧パネル(図1.1)と新パネル(図1.2)があるので、それぞれのパネルについて説明します。今回は使い慣れたパネルを使用すると良いかもしれません。ただし、旧コントロールパネルは2021年2月に提供を終了する予定です。手順として、まずサーバーコントロールパネル(以下、SCP)にログインします。ログイン画面はそれぞれ以下の通りです。
SCPにログインすると、新旧どちらも画面左側にメニューが表示されています。旧パネルメニューでは、「アプリケーションの設定」→「PHPのバージョン選択」をクリックします(図1.3)。また、新パネルメニューでは、「スクリプト設定」→「言語のバージョン選択」をクリックします(図1.4)。
旧パネルメニューでは、「PHPのバージョン選択」が表示されるので、ラジオボタンで最新のバージョンを選択します(図1.5)。また、このとき、「モジュール版」チェックボックスをチェックしてください。
新パネルメニューでは、「言語バージョン設定」が表示されるので、ドロップダウンメニューで最新のバージョンを選択します(図1.6)。このとき、モジュールモードを選択するラジオボタンが表示されるので、「モジュール」選択します。
さくらインターネットのPHPには、CGIモードとモジュールモードの二つがあります。モジュールモードを利用することで、WordPressやEC-CUBE、concrete5などPHPを利用したCMSの管理画面の操作やサイト表示速度が大幅に改善されるそうです。これまで、サーバ番号がwww3700以下の場合は、モジュールモードは使用できませんでした。しかし、2019年2月から実施されたFreeBSDのアップデートによって今まで使用できなかったサーバ番号でもモジュールモードを使用できるようになりました。
もしサーバ番号がwww3700以下に該当し、CGIモードを変更していない場合、CGIモードからモジュールモードへ変更しましょう。
1つ以上の推奨モジュールが存在しません
WordPressを問題なく運営していく上で必要なPHPモジュールがない場合に表示されるようです。
今回表示されたメッセージは以下の通りです。
PHP モジュールはサイトの稼働に必要なほとんどのタスクをサーバー上で実行します。変更はサーバー管理者が実施する必要があります。
WordPress ホスティングチームでは、こうした推奨されていたり必須とされていたりするモジュールのリストをチームのハンドブック (新しいタブで開く)でメンテナンスしています。
– オプションのモジュール imagick がインストールされていないか、無効化されています。
今回のメッセージで存在しないと言われたモジュールはimagickでした。このモジュールをインストール、あるいは有効化するために、以下のサイトを参考にしました。
さくらインターネットには、現時点で旧パネル(図1.1)と新パネル(図1.2)があるので、それぞれのパネルについて説明します。今回は使い慣れたパネルを使用すると良いかもしれません。ただし、旧コントロールパネルは2021年2月に提供を終了する予定です。手順として、まずサーバーコントロールパネル(以下、SCP)にログインします。ログイン画面はそれぞれ以下の通りです。
SCPにログインすると、新旧どちらも画面左側にメニューが表示されています。旧パネルメニューでは、「アプリケーションの設定」→「PHP設定の編集」をクリックします(図1.3)。また、新パネルメニューでは、「スクリプト設定」→「php.ini設定」をクリックします(図1.4)
どちらのパネルでもテキストボックスが表示されるので、以下の内容を追加します。
extension = imagick.so
旧パネルメニューでは、「PHP設定ファイルの編集」が表示されるので、テキストボックスに上記の内容を追加します(図1.5)。追加したら「保存する」ボタンをクリックします。
新パネルメニューでは、「PHPiniファイル設定」が表示されるので、テキストボックスに上記の内容を追加します(図1.6)。追加したら「保存する」ボタンをクリックします。
予約したイベントが遅れています
予約したイベントの実行が遅れている場合に表示されるようです。
予約したイベント action_scheduler_run_queue の実行が遅延しています。サイトは動作しますが、予約した投稿や自動更新は正しく動作しないかもしれません。
WordPressにインストールされているプラグインが原因のようです。このメッセージが解消されるにはプラグインの更新を待つしかありません。
永続オブジェクトキャッシュを使用してください
永続オブジェクトキャッシュを利用することで、サイトのデータベースの効率を上げれるようです。
永続オブジェクトキャッシュは、サイトのデータベースの効率を上げます。その結果、WordPress がサイトのコンテンツや設定を迅速に取得できるようになるため、読み込み時間を短縮できます。
ホスティングサービスに問い合わせれば、サイトで永続オブジェクトキャッシュを有効化できるかどうかがわかります。 お使いのホスティングサービスでは、次のオブジェクトキャッシュサービスをサポートしているようです: APCu。
ただし、サーバーによって対応が分かれるようです。さくらインターネットやXServerは、上記に示すようにAPCuが対応しています。また、さくらインターネットの以下のサイトでは、プラグインをインストールすることでAPCuを利用できると紹介しています。
ただ、以下のサイトでは、プラグインをインストールしてもメッセージが表示されなかったり、インストールしたプラグインによって別の問題も発生しているそうです。
上記サイトでは、メッセージを非表示にする方法も書かれています。とは言え、このメッセージが表示されているからと言ってWordpressの運営には特に問題はなさそうです。プラグインのインストールや非表示設定に抵抗がある場合は無理に対応する必要はないかもしれません。
自動組み込みオプションはパフォーマンスに影響を与える可能性があります
WordPressでは、自動的に読み込まれるテーマやプラグインが多いと、以下のメッセージが表示されるようです。
自動読み込みオプションはプラグインやテーマの設定で、WordPress でページを読み込むたびに自動的にプラグインやテーマが読み込まれます。自動読み込みオプションが多すぎると、サイトの動作が遅くなることがあります。 このサイトには options テーブル内に 1028 個の自動読み込みオプション (サイズ: 1 MB) があります。データベース内で自動読み込みオプションを確認し、サイトで必要なくなったオプションを削除できます。
この問題に関しては、以下のサイトが参考に挙げられます。
そして、上記のサイトでは、AAA Option Optimizerというプラグインが紹介されていました。
実際にAAA Option Optimizerを利用してこの問題が解決したというサイトは以下の通りです。
これらのサイトの情報を基に、テストサイトでAAA Option Optimizerをインストールしてみました。すると、過去にインストールして削除したはずのプラグインが大量に登録されていることが分かりました。ただ、これらのプラグインのautoloadを停止しても効果は得られませんでした。恐らく、autoloadを停止すべきプラグインがまだ残っているのかもしれません。データベースは下手にいじれないので、しばらく様子を見るしかなさそうです。
セキュリティ
WordPressを運営していると外部から様々な攻撃を受けます。テーマやプラグインの更新を怠ると、古いテーマやプラグインで判明した脆弱性がそのままになっている可能性があり、サイトが危険にさらされやすくなります。停止中のテーマやプラグインがあるのも同様です。サイトヘルスステータスのセキュリティでは、テーマやプラグインなどに問題があると表示されます。サイトを安全に運営していくためには、セキュリティに関する問題はできるだけ解消した方が良いです。
新しいバージョンのWordPressが利用可能です
今後、追加予定。
WordPressの更新が可能
WordPressの更新が可能な場合、以下のようなメッセージが表示されます。
このサイトでは新しいマイナーアップデートを利用できます。一般にマイナーアップデートはセキュリティ問題に対処することが多いので、インストールすることが重要です。
最新バージョンの WordPress をインストール
WordPressを更新してください。更新後に問題が起こる可能性が気になる場合はバックアップを取りましょう。
WordPressが更新可能な場合は、Wordpressの更新、あるいはダッシュボードの左側にあるメニューからいずれかを選択するとほとんどのページのトップに表示されます。
ダッシュボードの上部にが表示されている場合、このマークをクリックすると「Wordpressの更新」が表示されます。「Wordpressの更新」では新しいWordpressのが表示され、「今すぐ更新」ボタンをクリックして更新できます。日本語版と英語版の二つが表示されるので、更新時には注意してください。
更新可能なテーマがあります
更新可能なテーマがある場合、以下のようなメッセージが表示されます。
テーマはサイトのデザインを決定します。ブランドの一貫性とサイトの安全性の維持のため、常に更新することが重要です。
このサイトには1個のアップデート待ちのテーマがあります。
テーマを管理
更新可能なテーマを更新してください。更新可能なテーマは、Wordpressの更新、あるいはダッシュボードの左側にあるメニューから「外観」→「テーマ」からでも更新可能です。
ダッシュボードの上部にが表示されている場合、このマークをクリックすると「Wordpressの更新」が表示されます。「Wordpressの更新」では該当するテーマとプラグインが表示され、チェックボックスで選択して更新できます。
更新可能なプラグインがあります
更新可能なプラグインがある場合、以下のようなメッセージが表示されます。
プラグインは連絡フォームや e コマース機能などを追加してサイトを拡張します。サイトに深くアクセスするため、最新に保つことが重要です。
*個のプラグインがアップデートを待っています。
更新可能なプラグインを更新してください。更新可能なテーマは、Wordpressの更新、あるいはダッシュボードの左側にあるメニューから「プラグイン」→「インストール済みプラグイン」からでも更新可能です。
ダッシュボードの上部にが表示されている場合、このマークをクリックすると「Wordpressの更新」が表示されます。「Wordpressの更新」では該当するテーマとプラグインが表示され、チェックボックスで選択して更新できます。
停止中のテーマを削除してください
WordPressで使用しなくなったテーマは積極的に削除した方が良いそうです。この理由として、不要なテーマの使用はサイトが重くなるだけでなく、セキュリティホールの原因にもなるからです。テーマ開発者が開発や更新を停止したテーマは、更新されたWordPressでは動作しなくなる場合があり、セキュリティ上の危険もあります。停止中のテーマがある場合、以下のメッセージが表示されます。
テーマはサイトのデザインを決定します。ブランドの一貫性とサイトの安全性の維持のため、常に更新することが重要です。
サイトのインストール済みテーマ4個はすべて最新版です。
サイトには1個の停止中のテーマがあります。 サイトのセキュリティ向上のため未使用のテーマを削除することをおすすめします。WordPress のデフォルトテーマ Twenty Twenty、現在有効なテーマ *****、親テーマ **** は削除しないでください。
テーマを管理
インストール済みのテーマの数とその更新について表示されます。また停止中のテーマが表示されます。デフォルトのテーマはその時々で変更される可能性があります。有効化しているテーマは、親テーマ・子テーマが表示されます。更新されていないテーマは更新し、それ以外のテーマは出来るだけ削除しましょう。
停止中のプラグインを削除してください
WordPressで使用しなくなったプラグインは積極的に削除した方が良いそうです。この理由として、不要なプラグインの使用はサイトが重くなるだけでなく、セキュリティホールの原因にもなるからです。プラグイン開発者が開発や更新を停止したプラグインは、更新されたWordPressでは動作しなくなる場合があり、セキュリティ上の危険もあります。停止中のプラグインがある場合、以下のメッセージが表示されます。
プラグインは連絡フォームや e コマース機能などを追加してサイトを拡張します。サイトに深くアクセスするため、最新に保つことが重要です。
*個のプラグインがアップデートを待っています。
このサイトには*個の無効なプラグインがあります。 停止中のプラグインは攻撃者の標的になります。プラグインを使用するつもりがなければ削除することをおすすめします。
プラグインを管理
プラグインを更新
停止中のプラグインを管理
更新されていないプラグインがある場合、その数とメッセージが表示されます。停止中のプラグインがある場合、無効なプラグインとして、その数とメッセージが表示されます。更新されていないプラグインは更新し、不要なプラグインは削除しましょう。
サイトで HTTPS を使用していません
さくらインターネットには、現時点で旧パネルと新パネルがあります。旧パネルでの設定方法は過去にこのサイトでも紹介しています。
上記の記事を書いた時より方法が若干変更されている可能性があります。ここでは、旧パネルでの設定は過去の記事で割愛し、新パネルで説明します。手順として、まずサーバーコントロールパネル(以下、SCP)にログインします。ログイン画面は、以下の通りです(図1)。
SCPにログインすると、画面左側にメニューが表示されています。「ドメイン/SSL」→「ドメイン/SSL」をクリックします(図2)。ドメイン/SSLの設定画面では、SSLを設定できるドメインには青枠で示すように「SSL」ボタンが表示されています(図3)。契約した独自ドメインをサブドメインで使用している場合、SSL設定が可能となります。
「SSL」ボタンをクリックすると「SSL証明書登録」画面が表示されます(図4)。この画面では、「登録設定を始める~」ボタンをクリックします(図4の青枠)。
次に、「SSL証明書の利用種類を選択」画面が表示されます(図5)。このとき、いくつかの選択が表示されますが、今回の場合、無料SSLのLet’s Encryptを利用するので、その横にある「利用する」ボタンをクリックします(図5の赤枠)。
次に表示される「無料SSL証明書登録画面」画面では、「Let’s Encryptの利用ポリシーに同意する」のチェックボックスをチェックします(図6の青枠)。チェックを確認したら、「無料SSLを設定する」ボタンをクリックします(図6の赤枠)。すると、発行手続き中のメッセージが表示されるので、手続きはこれで終了です(図7)。ちなみに、この画面の下に「全削除」ボタンがありますが、クリックしないように注意してください。
サイト訪問者へエラー表示を行う設定になっています
サイト訪問者へエラー表示を行う設定にしている場合、以下のようなメッセージが表示されます。
デバッグモードを有効化するとエラーやサイトの失敗の詳細情報を収集できます。しかし誰もがアクセス可能な Web サイトに置くべきでない、重要な情報を含む場合があります。
値
WP_DEBUG_DISPLAY
はWP_DEBUG
により有効化されたか、構成ファイルに追加されました。これにより、エラーがサイトの画面上に表示されます。
今回、このメッセージが表示されたのは、wp-config.phpの以下の内容を以下のようにtrueにしていたことが原因でした。
define('WP_DEBUG', true)
この場合、trueをfalseに変更します。
define('WP_DEBUG', false)
バックグラウンド更新が想定通りに動作していません
バックグラウンド更新が想定通りに動作していない場合、以下のようなメッセージが表示されます。
バックグラウンド更新は使用中の WordPress のバージョンにセキュリティ更新がリリースされた際、自動更新できることを保証します。
- プラグインは
wp_version_check()
を無効化してアップデートを防ぎました。- バージョン管理システムは検出されませんでした。
- この WordPress サイトでは更新の実行の際に FTP 情報が必要となりません。
- すべての WordPress ファイルが書き込み可能です。
今回、このメッセージが表示されたのは、wp-config.phpの以下の内容を以下のようにtrueにしていたことが原因でした。
define('WP_DEBUG', true);
この場合、trueをfalseに変更します。
define('WP_DEBUG', false)
最後に
WordPress 5.2から サイトヘルスステータス が導入されました。この結果として、Wordpressのサイトを運営していく上で何が問題になるかが分かりやすくなったのではないかと思います。とはいえ、中にはどう解消すればよいかすぐには分からない問題もありました。特にサーバーの設定を操作しないと解決できない問題などはWordpressのサイトを運営し始めたばかりの人には難しいものもあるのではないかと思います。
私自身、いくつかの問題を解消する上で、多くのサイトを参考にさせていただきました。使用しているサイトがさくらインターネットなので、サーバーの設定をする場合、他のサーバーでは参考にならない可能性があります。それ以外の問題に関しては、Wordpress内の操作で解消できるので、共通していると思います。サイトヘルスステータスの解消に何かしらの参考になれば幸いです。
コメント
サイトヘルスステータスで「予約したイベント set_hours_event の実行が遅延しています。サイトは動作しますが、予約した投稿や自動更新は正しく動作しないかもしれません。」として重大な問題として警告され続けてるのですが何をどうすればいいのか全くわかりません。
どうかわかるようでしたら教えていただけると助かります。お願いします!
WordPressのサポートフォーラムで同様の質問がありました。
https://ja.wordpress.org/support/topic/%E3%82%B5%E3%82%A4%E3%83%88%E3%83%98%E3%83%AB%E3%82%B9%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
set_hours_event イベントはテーマにより予約されたイベントだそうです。
このため、使用しているテーマを変えるか、テーマの開発元に連絡して対応してもらう以外どうしようもないようです。
それ以外の方法に関しては専門ではないので、お答えしかねます。
どうもありがとうございました!