「エラー解決」タグアーカイブ

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対策 を導入してみてください。

Windows 11のアップデートが0%のまま進まない場合の対処法

Windows 11を使っていると、「更新プログラムを確認しています」や「ダウンロード 0%」のまま進まない という状況に遭遇することがあります。特に大型アップデートやセキュリティ更新が多数あるとこの現象が発生しやすい印象ですね。

この記事では、Windows 11のアップデートが0%から進まない原因と解決方法について解説します。


主な原因

アップデートが0%から動かない場合、次のような要因が考えられます。

  1. インターネット接続の不安定さ
    回線速度が遅い、Wi-Fiが切れるなどの影響で進まないことがあります。

  2. Windows Updateの一時的な不具合
    Microsoftの配信サーバーやアップデートサービスの不具合で、処理が止まる場合があります。

  3. キャッシュや一時ファイルの破損
    更新プログラムの一時ファイルが壊れていると、ダウンロードが進まなくなります。

  4. ストレージ不足
    Cドライブの空き容量が少ないと、更新が進まないことがあります。


対処法

1. インターネット接続を確認する

  • Wi-Fiを再接続する

  • 有線LANに切り替える

  • 他のデバイスでネット速度を確認してみる

安定した回線で再度試すことが大切です。


2. PCを再起動して再試行

シンプルですが効果的な方法です。
再起動後、「設定」→「Windows Update」→「更新プログラムの確認」 をもう一度実行してみましょう。


3. Windows Update トラブルシューティングを実行

  1. 「設定」 → 「システム」 → 「トラブルシューティング」 → 「その他のトラブルシューティング」

  2. Windows Update を選択して実行

自動で問題を検出・修復してくれる場合があります。


4. キャッシュファイルを削除する(SoftwareDistribution フォルダ)

  1. Windowsキー + Rservices.msc を入力

  2. 「Windows Update」を停止

  3. C:\Windows\SoftwareDistribution フォルダを開く

  4. 中身のファイルをすべて削除

  5. 「Windows Update」サービスを再開

これで破損したキャッシュがリセットされます。


5. 空き容量を確保する

  • ディスクのクリーンアップを実行

  • 不要なアプリや一時ファイルを削除

  • 外付けHDDやUSBメモリを使ってデータを退避

最低でも 20GB以上 の空き容量を確保しておきましょう。


6. 手動でアップデートを適用する

どうしても進まない場合は、以下の方法があります。

  • Microsoft Updateカタログ から直接ダウンロード

  • Windows 11 インストールアシスタントを利用

公式ツールを使えば強制的に更新可能です。


まとめ

Windows 11のアップデートが0%から動かない場合は、

  • ネット接続の確認

  • 再起動とトラブルシューティング

  • キャッシュ削除や空き容量確保

  • 手動アップデート

の順に試すと解決できるケースが多いです。

アップデートはセキュリティや機能改善に必須なので、止まってしまったら早めに対処しておきましょう。

Oracle「ORA-06502: PL/SQL 数値または値エラー」エラーが出た時の解決方法

Oracle データベースを利用していると、**「ORA-06502: PL/SQL: 数値または値エラー」**というエラーに遭遇することがあります。これは比較的よく見られるエラーの一つで、主に「データ型の不一致」や「文字列長の超過」が原因です。この記事では、このエラーの代表的な原因と解決方法を解説します。


ORA-06502 エラーの意味

エラーメッセージ全文は以下のようになります。

 
ORA-06502: PL/SQL: 数値または値エラー

このエラーは、PL/SQL 実行時に「値が期待されるデータ型に収まらない」場合に発生します。例えば以下のケースです。

  • 数値型の変数に、文字列を代入しようとした場合

  • VARCHAR2 の長さ制限を超える文字列を代入した場合

  • 型変換関数(TO_NUMBER, TO_DATE など)が失敗した場合


よくある原因と解決方法

1. 文字列長の超過

原因: 変数 VARCHAR2(5) に 6文字を代入している。

解決方法: 変数の長さを見直す、あるいは SUBSTR を利用して長さを調整する。


2. 数値変換エラー

原因: 数値に変換できない文字列を渡している。

解決方法: 入力値が数値かどうかを事前にチェックする。正規表現を利用するのも有効です。

 
IF REGEXP_LIKE('123', '^[0-9]+$') THEN v_num := TO_NUMBER('123'); END IF;

3. 不正な日付変換

原因: 存在しない日付を変換しようとした。
解決方法: 入力フォーマットをチェックし、妥当な値のみ渡す。


4. 数値桁数のオーバーフロー

原因: 定義した精度・スケールを超える値を代入している。

解決方法: NUMBER の定義を見直す、または値を丸める。


トラブルシューティングのポイント

  • エラー発生時の 変数定義 を確認する

  • DBMS_OUTPUT.PUT_LINE代入しようとしている値 を出力する

  • データベースの カラム定義と変数定義の不一致 を確認する

  • 外部入力(CSV など)を扱う場合は 入力データの妥当性チェック を行う


まとめ

「ORA-06502」エラーは、ほとんどの場合 データ型の不一致値の範囲超過 が原因です。
再発防止のためには以下が重要です。

  • 変数やカラムの定義を余裕を持たせて設計する

  • 入力値チェックを徹底する

  • デバッグ時に DBMS_OUTPUT を活用して値を追跡する

これらを意識することで、エラーを効率的に解消できるはずです。