タグアーカイブ 403エラー

Elementorエディタが開かない時のREST API 403エラー解決法

“`html

Elementorエディタが読み込まれずにフリーズし、REST APIが403禁止エラーを返す場合、根本原因は「プラグインコアファイルの破損」「WordPressのサブディレクトリ構成による認証不整合」「サーバーレベルのアクセス制限」のいずれか、または複合にある。FTPやファイルマネージャーから手動でElementorを再設置し、サイト設定の見直しとパーマリンク構造のリセットを実施すれば、大半のエラーは解消する。

なぜ Elementor エディタが開かず REST API が403エラーになるのか

なぜ Elementor エディタが開かず REST API が403エラーになるのか

プラグインコアファイルの破損が引き起こす連鎖不具合

Elementorが途中でアップデートに失敗したり、サーバー上でファイルが欠損したりすると、致命的なクラス読み込みエラーが発生する。代表的なものが「Uncaught Error: Class “Elementor\Controls_Stack” not found」だ。これはElementor本体の動作に必須のファイルが物理的に存在しないか、PHPの要求に対して不完全な状態で読み込まれていることを示す。管理画面からの再インストールではサーバーキャッシュや権限の影響で上書きに失敗するケースがあるため、手動での完全初期化が必要になる。

WordPressのサブディレクトリ構成が生む認証クッキーのズレ

WordPress本体を/wordpressに配置し、サイトアドレスだけをルートドメインに設置する構成は、REST APIの認証において深刻な不具合を引き起こす。ブラウザはWordPressのログインクッキーを物理的なインストールパスに対して発行するため、サイトURLと実際のパスが異なると、APIリクエストに必要なnonceや認証クッキーが正しく送信されず「rest_not_logged_in」が返る。Elementorエディタは内部的に多数のREST API通信を行っているため、この認証エラーが編集画面そのものを動作不能にする。

サーバー設定やセキュリティプラグインがAPIをブロックしている

ModSecurityやWAF(ウェブアプリケーションファイアウォール)、あるいは.htaccessに記述された独自ルールが、/wp-json/パスへのアクセスを機械的にブロックしている場合も403エラーが発生する。また、一部のセキュリティプラグインはREST APIのエンドポイントを厳格に制限する機能を備えており、無効化したと思っていてもキャッシュ層に設定が残って影響していることがある。

Before(エラー状態)
Fatal Error Class “Elementor\Controls_Stack” not found
403 Forbidden /wp-json/elementor/v1/site-navigation/recent-posts
要素: エディタ画面が白またはローディング停止。REST APIがログイン状態を認識せず全遮断。
After(解決状態)
200 OK 全プラグインファイルが完全に復元される
Auth OK REST APIがユーザー認証を正しく通過
要素: Elementorエディタが即座に起動し、ウィジェットの読み込みや保存が可能に。

エラーが発生している環境では、管理画面からの通常操作がほぼ通じない状態になっている。上のBefore/AfterのようにエディタとAPI認証を同時に復旧させるには、外部からのファイル操作とURL設定の修正が不可欠となる。

実際に環境を修復する4ステップの手順

実際に環境を修復する4ステップの手順
STEP 1 FTPからElementorを手動で再設置する
STEP 2 パーマリンクをリセットしキャッシュを削除する
STEP 3 wp-config.phpでサイト構成の不整合を補正する
STEP 4 .htaccessとサーバー側の認証ブロックを解除する

STEP 1 FTPからElementorを手動で再設置する

管理画面の「プラグイン」から削除するだけでは、不完全なファイルが残る危険がある。FTPソフト、またはサーバーのファイルマネージャーを開き、/wp-content/plugins/elementor/ディレクトリを直接削除する。Pro版を使用している場合は/wp-content/plugins/elementor-pro/も同様に削除する。削除後、Elementorの公式サイトから最新のzipファイルをダウンロードし、同じディレクトリにアップロードして展開することで、完全に健康なコアファイルが書き戻される。これで「Controls_Stack」を含むクラスファイルの欠損は物理的に解消される。

STEP 2 パーマリンクをリセットしキャッシュを削除する

管理画面の「設定」→「パーマリンク」にアクセスし、「変更を保存」を2回クリックするだけでもREST APIのルーティング情報が再生成される。これにより、サイトの内部URL構造が強制的にリセットされる。あわせて、導入しているキャッシュプラグインの全キャッシュ削除、およびサーバー側のVarnishやNginxキャッシュが有効な場合はそれらのパージも実行する。

STEP 3 wp-config.phpでサイト構成の不整合を補正する

WordPress本体がサブディレクトリにある環境では、認証クッキーのパス指定を明示的に定義することで403エラーが劇的に改善する。ルートのwp-config.phpに以下の定数を追記する。これは「COOKIE_DOMAIN」の指定だけでなく、管理画面と公開側で異なるパスにクッキーを適応させるための指示だ。

define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '.〇〇.com'); // 自ドメインに合わせる

自サイトがSSL化されている場合は、管理画面の「設定」→「一般」内の「WordPressアドレス」と「サイトアドレス」の両方がhttpsで始まっているかも再確認する。片方がhttpで残っているとREST APIのリクエストがクロスオリジン扱いされ、認証が外れる。

STEP 4 .htaccessとサーバー側の認証ブロックを解除する

WAFやModSecurityが/wp-json/へのアクセスを攻撃と誤認してブロックしている場合、サーバー管理パネルから当該ルールを一時無効化するか、ホワイトリストに追加する。レンタルサーバーの場合、管理画面の「セキュリティ」関連項目にWAFの遮断ログが記録されていることが多い。.htaccessに手動でREST APIを遮断する記述を追加した覚えがなくても、セキュリティプラグインが自動追記しているケースがあるため、以下の記述群が存在しないか確認する。

# もし以下のような記述があれば一時的に削除かコメントアウト
# RewriteRule ^wp-json - [F]

致命的エラー「Class “Elementor\Controls_Stack” not found」の根本対応

致命的エラー「Class

このエラーは単にファイルが見つからないと言っているのではなく、「Elementorの起動シーケンスの中で呼び出されるべき抽象クラスがメモリ上に展開できない」という致命的な状態を指す。管理画面から一度プラグインを「無効化」して「再有効化」してもPHPのオートローダーが不完全なファイル索引を参照し続けるため、FTPから一度完全に削除して、再設置するSTEP 1だけが確実な解決策となる。Pro版を導入している場合、Free版のコアクラスが正しくロードされていないとPro版の処理がすべて失敗するため、必ず両方を手動で入れ直す。

サブディレクトリ環境で403を連発させない設定の定石

サブディレクトリ環境で403を連発させない設定の定石

WordPressを/wordpressに置き、公開URLはルートにする構成は、管理画面へのアクセスパスと公開APIパスの二重構造を生む。システム内部ではadmin-ajax.phpやREST APIの呼び出し元が物理パスを参照する傾向にあるため、ここでクッキーの不一致が起きる。最も安定させる方法は、ルートにあるindex.phpが正しくサブディレクトリを指しているかを確認し、かつwp-config.phpで前述のクッキー定数を定義することだ。可能ならば、この際にWordPressをサブディレクトリからルートディレクトリへ正式に移動させることも検討する価値がある。

よくある質問

セーフモードを有効にしてもElementorエディタが開かないのはなぜか

セーフモードはテーマとElementor以外のプラグインを外して動作するが、今回の主原因は「Elementor本体ファイルの破損」と「REST APIの認証エラー」である。そのため、セーフモードでも参照するコアファイルが破損していれば画面は起動せず、API認証の障害もそのまま残り続ける。セーフモードはあくまで「他のプラグインとの競合」を疑う場合の手段であり、今回のような根本的なファイル破損には効果がない。

変更を保存したはずのパーマリンク設定が元に戻ることはあるか

サーバーの.htaccessファイルやNginxの設定ファイルが書き込み禁止になっていると、パーマリンクの更新が表層的に成功したように見えても内部的に反映されない。FTPで.htaccessのパーミッションが606や666など適切な値になっているか確認し、WordPressが自動生成するRewriteEngine On以下のブロックが存在するかも検証する必要がある。

PHPのバージョンアップが原因でElementorが動かなくなることはあるか

PHP 8.2や8.3、8.4へのアップデートで、従来は警告で済んでいたコードが致命的エラーに格上げされるケースは確かにある。しかし「Controls_Stack not found」はバージョン互換性よりもファイルの単純な欠落または不完全なアップロードが原因だ。事前にサーバーのPHPエラーログを開き、不足している具体的なファイルパスが出力されていないかを確認すると、欠落しているファイルが明確になる。

REST APIを意図的に無効化するセキュリティプラグインの代表例はあるか

WordfenceやiThemes Securityなどの包括的なセキュリティプラグインは、設定次第で未認証または全ユーザーのREST APIアクセスを制限できる。今回のケースではログイン済みの管理者でも「rest_not_logged_in」になるため、むしろクッキーやURLの不一致が強く疑われるが、検証のためにはそれらのプラグインを本当に全停止し、サーバー側のキャッシュを完全にパージする必要がある。

この記事のポイント

  • 403エラーとエディタ停止はコアファイル破損と認証不整合の複合症状である
  • 管理画面ではなくFTPから手動でフォルダを削除し再設置する
  • サブディレクトリ環境では必ずCookie定数を明示的に定義する
  • パーマリンクの再保存と全キャッシュの削除をセットで実行する
  • WAFや.htaccessがREST APIをブロックしていないか確認する