Events Manager 7.3.7更新後に致命的エラーで画面が真っ白になった時の直し方

Events Manager 7.3.7更新後に致命的エラーで画面が真っ白になった時の直し方

Events Manager 7.3.7更新後に致命的エラーで画面が真っ白になった時の直し方

Events Manager 7.3.7 へ更新した直後にサイトが真っ白になり、WP_HTML_Tag_Processor::apply_attributes_updates() の致命的エラーが発生する現象は、別のプラグインやテーマが開始した出力バッファリングとの競合が原因だ。復旧には、プラグインを 7.3.6 以前に差し戻す。根本解決には、競合相手を特定して対処する必要がある。

なぜ 7.3.7 で WP_HTML_Tag_Processor の致命的エラーが起きるのか

なぜ 7.3.7 で WP_HTML_Tag_Processor の致命的エラーが起きるのか

表示されるエラーメッセージは「PHP Fatal error: WP_HTML_Tag_Processor::apply_attributes_updates(): Cannot use output buffering in output buffering display handlers」だ。これは、すでに出力バッファリング(ob_start)が始まっているのに、さらに別の出力バッファリングを入れ子で開始しようとしたときに PHP が送出する。

Events Manager 7.3.7 では、HTML 出力の整形やサニタイズに WordPress の WP_HTML_Tag_Processor を利用している。このクラスは内部的に ob_start() を使うことがあり、タイミングによっては二重バッファリングの禁止に抵触する。単体では問題にならなくても、先に出力バッファリングを開始する別のプラグイン(キャッシュプラグインやページビルダー、一部の翻訳プラグインなど)やテーマが組み合わさると、この競合が表面化する。

Before(エラー状態)
プラグイン A が先に出力バッファリングを開始。その後 Events Manager 7.3.7 が WP_HTML_Tag_Processor 経由で 2 重目のバッファを開始しようとして 致命的エラー で停止、画面が真っ白になる。
After(競合解消後)
競合相手を無効化するか、Events Manager を 7.3.6 に戻すと出力バッファリングの入れ子が発生せず、サイトが正常に表示される
エラー発生時  復旧後

まずはサイトを復旧させる 以前のバージョンに戻す手順

まずはサイトを復旧させる 以前のバージョンに戻す手順

管理画面にアクセスできず真っ白な状態でも、FTP またはサーバーのファイルマネージャーでプラグインを差し戻せば、数分で復旧できる。データベース上のイベント情報や設定は保持される。

STEP 1 FTP でサーバーに接続し、/wp-content/plugins/events-manager/ フォルダを events-manager-old にリネームする
STEP 2 管理画面が表示されるようになったら、「プラグイン」→「インストール済みプラグイン」で自動的に無効化された Events Manager を完全に削除する(イベントデータはデータベースに残る)
STEP 3 公式リポジトリの「開発」タブやバージョン管理から 7.3.6 の ZIP を入手し、「プラグイン」→「新規追加」→「プラグインのアップロード」でインストールして有効化する

FTP が使えない場合の代替手段

レンタルサーバーの管理画面にファイルマネージャー機能があるなら、同じ操作ができる。phpMyAdmin から wp_options テーブルの active_plugins 行を直接編集してプラグインの無効化を試みる方法もあるが、操作ミスが起きやすいため、ファイルマネージャーでフォルダ名を変更するほうが安全だ。

競合するプラグインやテーマを特定する手順

競合するプラグインやテーマを特定する手順

7.3.7 へ戻したい場合や、今後のアップデートでも同様の競合を防ぎたい場合は、次の手順で原因の相手を突き止める。

Health Check & Troubleshooting プラグインを使う

「サイトヘルスチェック&トラブルシューティング」プラグインは、管理者だけが特定のプラグインやテーマを有効化した状態をテストできる公式推奨ツールだ。有効化して「トラブルシューティングモード」を開始すると、サイトの外観を変えずに、Events Manager 7.3.7 だけを有効化した状態でエラーの再現を確認したり、1 つずつ他のプラグインと組み合わせて競合を絞り込める。

手動でプラグインを 1 つずつ検証する

  • 管理画面の「プラグイン」→「インストール済みプラグイン」で、Events Manager 以外の全プラグインを無効化する
  • テーマを標準テーマ(Twenty Twenty-Five など)に切り替える
  • Events Manager 7.3.7 を有効化してエラーが出ないことを確認する
  • 1 つずつ他のプラグインを有効化し、エラーが再現した時点で競合相手を特定する
  • テーマも元に戻して再現するか確認する

エラーログの取得と開発者への報告

エラーログの取得と開発者への報告

競合相手が特定できたら、Events Manager の開発元に情報を提供することで修正が期待できる。wp-config.phpWP_DEBUGtrue にし、WP_DEBUG_LOGtrue に設定すると、/wp-content/debug.log にエラーの詳細が記録される。

7.3.7 を有効化し競合プラグインも有効化した状態でエラーを発生させ、そのログを添えて公式フォーラムやサポートに報告する。同時に、競合相手のプラグイン開発者にも情報を伝えると、双方の調整が進みやすくなる。

よくある質問

7.3.7 に更新しなければ、この問題は起こらないのか

その通りだ。Events Manager 7.3.6 では WP_HTML_Tag_Processor を利用していないため、出力バッファリングの競合は発生しない。セキュリティ上や機能上の理由でアップデートしたい場合は、競合相手を特定してから更新するか、修正版のリリースを待つことを推奨する。

プラグインを削除してもイベントのデータは消えないか

Events Manager の予約データやイベント情報、設定はデータベースに保存されている。管理画面からプラグインを削除しても、これらのデータは保持される。ただし、完全に削除した場合、プラグイン側のアンインストール処理で消える可能性もあるため、事前にバックアップを取っておくとより安全だ。

他のプラグインでも同じようなエラーは出る可能性があるのか

WP_HTML_Tag_Processor は WordPress 本体の機能であり、他のプラグインでも利用される可能性がある。出力バッファリングを多用するプラグイン(キャッシュ系、出力圧縮系、外部出力を加工する系)と組み合わさると、同種の致命的エラーが起こりうる。発生時は同様の切り分け手順で原因を突き止められる。

管理画面にすら入れない場合、他に試せることはあるか

FTP でプラグインフォルダをリネームするのが最も確実な復旧手段だ。サーバー管理パネルのファイルマネージャーでも同様に操作できる。どうしてもファイルに触れない場合は、サーバー会社のサポートに依頼してリネームや無効化を依頼する方法もある。WP-CLI が使える環境なら wp plugin deactivate events-manager --skip-plugins=events-manager で無効化できる。

この記事のポイント

  • Events Manager 7.3.7 の致命的エラーは、他のプラグインやテーマとの出力バッファリング競合で発生する
  • 復旧には FTP でプラグインフォルダをリネームし、7.3.6 以前のバージョンに差し替える
  • 競合相手は「サイトヘルスチェック&トラブルシューティング」プラグインで安全に特定できる
  • エラーログを添えて開発者に報告すれば、今後の修正を促せる
  • プラグイン削除ではイベントデータは原則消えず、データベースに残る
佐々木 太陽

・ Reddit、Stack Overflow、WordPress.org フォーラムを日々巡回し、現場の悩みを拾い上げて記事化 ・ WordPress、WooCommerce、Next.js などモダンWeb制作領域のトラブルシューティングが専門 ・ 「検索しても答えが見つからなかった」を一つでも減らすことが目標 ・ エラーメッセージから根本原因にたどり着く粘り強い調査が得意 ・ 初心者がつまずきやすい箇所を先回りで解決する記事作りを心がけている

メッセージを残す