WordPressで「アクティブなPHPセッションを検出」エラー発生時の原因とmu-pluginでの解決方法

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) 


 

🔍 動作確認

  1. ファイルをアップロード

  2. WordPress管理画面を再読み込み

  3. 「サイトヘルス → 再チェック」を実行

✅ 結果:「アクティブな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対策 を導入してみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

email confirm*

post date*