WordPress のサイトヘルス(Site Health)で、次のような警告が表示されて困ったことはありませんか?
🧩 発生した警告内容
「アクティブな PHP セッションが検出されました
WordPress のパフォーマンスを改善するために、HTTP リクエスト前にセッションを閉じてください。」)
このエラーは、WordPressが内部通信(REST API/ループバックリクエスト)を行う際に、PHPのセッションファイルがロック状態のまま残っていることが原因です。
⚙️ なぜ発生するのか?
WordPress は「ブロックエディター」や「サイトヘルス診断」などで REST API を使って自分自身と通信しています。
ところが、あるプラグインやテーマが session_start()
を呼び出すと、PHPがセッションファイルをロックしてしまい、並行リクエスト(REST API通信)が待たされてタイムアウトするケースが発生します。
主な原因
-
session_start()
を使うプラグイン(例:ログイン拡張、OTP認証、Google Site Kit、アバター系など) -
php.ini
の設定でsession.auto_start=1
になっている -
テーマや独自コード内でのセッション開始忘れ
このような状態になると、WordPress のサイトヘルスで
「アクティブな PHP セッションを検出しました」
という警告が出るようになります。
💡 今回のケース
私の環境ではsession_start()
を使用しているプラグインは以下のようになってました。
-
Google Site Kit(Google公式プラグイン)を使用
-
OTP(ワンタイムパスワード)やアバター系プラグインも動作中
-
どれもセッション開始を止められない
つまり「プラグインを停止せずに安全に解消したい」状況でした。
✅ 解決策:mu-pluginでセッションを早期終了する
プラグインを無効化できない場合は、REST APIやループバック通信が走る前にセッションを閉じるだけで十分改善します。
これをWordPressが自動で読み込む mu-plugin(必須プラグイン)として配置すればOKです。
🧭 手順
手順①:フォルダを確認/作成
wp-content/mu-plugins/
フォルダが存在しない場合は作成します。
手順②:ファイル作成
ファイル名:wp-content/mu-plugins/close-session.php
💻 コード全文(コピペOK)
🔍 動作確認
-
ファイルをアップロード
-
WordPress管理画面を再読み込み
-
「サイトヘルス → 再チェック」を実行
✅ 結果:「アクティブなPHPセッションを検出」警告が消え、REST APIテストも正常に完了しました。
🧠 補足:プラグイン停止で直る場合との違い
対処方法 | メリット | デメリット |
---|---|---|
プラグイン停止 | 根本解決 | 必要な機能が使えなくなる |
mu-plugin設置 | 停止不要・安全 | セッション依存の書き込みが一部省略される可能性(軽微) |
大半のケースでは session_write_close()
によって問題なく動作します。
Google Site Kit や WP Super Cache との併用環境でも安定動作を確認済みです。
🧾 まとめ
項目 | 内容 |
---|---|
発生原因 | プラグインやテーマがPHPセッションをロックしたままにする |
症状 | Site Healthに「アクティブなPHPセッション」警告、REST APIエラー(cURL 28) |
対処法 | mu-pluginでREST/API実行前にセッションを閉じる |
メリット | プラグイン停止不要で安定化、タイムアウト防止 |
検証結果 | 警告解消+パフォーマンス改善を確認 |
これで「アクティブなPHPセッション」警告とはサヨナラできます✨
もし同じようにGoogle Site Kitやログイン関連プラグインを使っていて警告が出る場合は、今回の mu-plugin対策 を導入してみてください。