「このサイトで重大なエラーが発生しました」の原因と直し方

「このサイトで重大なエラーが発生しました」と出て、管理画面にも入れない。まず落ち着いてください。この画面が出ているとき、記事や画像のデータは消えていません。プラグインかテーマのどれかが、PHPのバージョンや更新に合わなくなって止まっているだけです。それを止めれば表示は戻ります。
この記事では、今どの状態かを3つに分けて、それぞれの入り口から原因を止め、根本を直すところまでを書いています。手順の画面は、ローカルのWordPressに古いプラグインを入れて実際にこのエラーを起こし、復旧モードで直すところまでを撮ったものです。あわせて、WordPress本体のコードを読んで分かった「復旧モードのメールが届かない理由」も書いています。
伊藤このエラーで相談をいただくとき、半分くらいは「PHPのバージョンを上げた直後」か「プラグインを更新した直後」です。直前に何をしたかを思い出せれば、原因は8割がた分かります。
プラグインかテーマが止まっているだけでデータは残っている


この画面は、WordPressがPHPの「致命的なエラー」を受け止めたときに代わりに出す画面です。以前は真っ白な画面(ホワイトスクリーン)になっていたものが、5.2からこの表示と復旧の仕組みに変わりました。WordPress本体が壊れたわけではなく、読み込みの途中でどれかのプログラムが止まり、それ以降が実行されていない状態です。
止まる原因は、ほとんどが次の4つのどれかです。
- PHPのバージョンを上げた(サーバーパネルで切り替えた、またはサーバー会社が自動で上げた)後、古いプラグインやテーマが新しいPHPで使えなくなった関数を呼んでいる
- プラグインかテーマを更新した直後。新しい版が、今のWordPress本体や他のプラグインと合わない
- functions.php などのファイルを編集した直後。1文字の打ち間違いでも全体が止まる
- メモリ不足。「Allowed memory size of … bytes exhausted」という文言がエラーの詳細に出る
まれに改ざんが原因のこともありますが、その場合は直前に何もしていないのにある日突然出ます。心当たりがなく、ログイン画面の見た目も変わっているようなら、改ざんを疑って無料のセキュリティ診断で先に確かめてください。
ローカル環境で再現したエラーは、PHP 8.0で削除された create_function という関数を呼ぶプラグインを有効化したものです。エラーの詳細はこう出ます。
Uncaught Error: Call to undefined function create_function() in
/wp-content/plugins/old-widget-helper/old-widget-helper.php:9「undefined function」はPHPのバージョンに合わない典型です。ファイルのパスに plugins か themes が含まれていれば、その名前のプラグインかテーマが原因と分かります。
管理画面に入れるかで直し方が分かれる


サイトのURLの後ろに /wp-admin/ を付けて開いてください。エラーが表示のテーマ側だけで起きている場合、管理画面は普通に入れます。入れたら「プラグイン」で直前に更新・追加したものを無効化するか、「外観」→「テーマ」で標準テーマに切り替えて、表示が戻るか見ます。
管理画面でも同じエラーが出る場合が、この記事の本題です。入り口は2つあります。WordPressが送る復旧モードのメールと、FTPでのファイル操作です。


復旧モードのメールはログイン画面を開かないと届かない
管理画面でエラーが出たとき、WordPressは管理者のメールアドレスに「サイトで技術的な問題が発生しています」という件名のメールを送ります。本文には、原因のプラグインの名前、エラーが起きたファイルと行、PHPのバージョン、そして復旧モードに入るためのリンクが書かれています。
今回の場合、WordPress がプラグイン Old Widget Helper でエラーを捉えました。(中略)もしサイトが壊れていてダッシュボードに正常に接続できない場合、WordPress には特別な「リカバリーモード」があります。これによりダッシュボードに安全にログインし、さらに調査をすることができます。(中略)サイトを安全に保つため、このリンクは1日に有効期限が切れますが、ご心配なく。有効期限後にこのエラーが再度発生した場合は、新しいリンクをお送りします。
WordPress 6.9 が送る復旧モードのメール本文(ローカル環境で受信したもの)
このメールが「届かない」という相談が多いのですが、理由の1つはWordPress本体の仕組みにあります。


WordPress本体のコードでは、復旧モードのメールはログイン画面(wp-login.php)か管理画面(wp-admin)でエラーが起きたときだけ送られます。トップページでエラーを見ているだけでは、何度開いても送られません。メールを待つ前に、/wp-login.php を一度開いてください。それで送られます。
もう1つの理由はメールの配送です。公式ドキュメントにも、メール送信用のプラグインを使っていると、それが読み込まれる前にエラーが起きてサーバーから直接送られ、迷惑メールに入ったり届かなかったりすることがある、と書かれています。管理者メールアドレスが古いままのサイトも多いので、「設定」→「一般」で確認できる状態なら見ておいてください。
メールのリンクから復旧モードで入る


リンクを開くと、ログイン画面に「リカバリーモードを初期化しました」と出ます。普段のユーザー名とパスワードでログインしてください。復旧モードでは、エラーを起こしたプラグインやテーマがそのブラウザだけで一時停止され、管理画面が開きます。他の訪問者にはエラー画面が出たままなので、急いで次へ進みます。




「プラグイン」を開くと、一覧の上に「停止中」という絞り込みが増えています。そこに原因のプラグインとエラーの内容が出るので、「無効化」を押します。テーマが原因のときは「外観」→「テーマ」で標準テーマに切り替えます。


無効化したら、右上の「リカバリーモードを終了」を押して、トップページと管理画面を開き直します。普通に表示されれば、復旧は完了です。ここまでで止めているのは「原因」であって「根本」ではないので、後の章で直します。



復旧モードは「そのブラウザだけ」で効いています。無効化せずにブラウザを閉じると、次に開いたときはまたエラー画面です。入ったら必ず無効化までやってください。
メールが来ないときはFTPでフォルダ名を変える
ログイン画面を開いてもメールが来ない、管理者アドレスが分からない、という場合は、サーバーのファイルに直接触ります。FTPソフトか、サーバーパネルのファイルマネージャーで wp-content を開いてください。WordPress公式のトラブルシューティングで案内されている方法です。
原因が分かっているならそのフォルダだけ
エラーの詳細(メール、またはサーバーのエラーログ)にプラグインのフォルダ名が出ているなら、wp-content/plugins の中のそのフォルダの名前を変えます。たとえば old-widget-helper を old-widget-helper_off に。WordPressはフォルダが見つからないプラグインを自動で無効化するので、これだけで表示が戻ります。
分からないなら plugins ごと
どれが原因か分からないときは、wp-content/plugins フォルダ自体の名前を plugins_off に変えます。全プラグインが止まり、管理画面に入れるようになります。入れたら、名前を plugins に戻してください。プラグインは全部「停止中」になっているので、1つずつ有効化して、どれでエラーが出るかを探します。
テーマが疑わしいときは、wp-content/themes の中の使っているテーマのフォルダ名を変えると、WordPressは標準テーマ(Twenty 系)に切り替わります。
エラーの内容はログに記録して読む
どこで止まっているかを自分で確かめたいときは、wp-config.php に次の3行を足すと、エラーの内容が wp-content/debug.log に記録されます。画面には出さない設定にするのがポイントです。
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );WP_DEBUG や他のデバッグツールを本番環境で使用することは推奨されません。これらはローカルのテスト環境やステージング環境での使用を想定しています。
WordPress.org「WordPress のデバッグ」
公式ドキュメントのとおり、本番で使うのは原因を見つけるまでの一時的な措置です。debug.log にはサーバーのパスなどが書かれるので、原因が分かったら3行を消し、ログファイルも削除してください。
止めたプラグインを戻すか捨てるかはPHPとの相性で決める


無効化で表示が戻っても、そのプラグインの機能は止まったままです。ここからは、原因別に根本を直します。
| 直前の操作 | エラーの文言 | 根本の直し方 |
|---|---|---|
| PHPのバージョンを上げた直後 | undefined function、syntax error | サーバーパネルで元のPHPに戻して表示を確保。プラグイン・テーマを最新に更新してから、もう一度PHPを上げる |
| プラグインを更新した直後 | Cannot redeclare、Class not found | そのプラグインを削除して1つ前の版を入れ直すか、代替に替える。本体とテーマも最新にする |
| ファイルを編集した直後 | syntax error, unexpected | 編集前のファイルに戻す。編集は子テーマで、バックアップを取ってから |
| メモリ不足 | Allowed memory size exhausted | wp-config.php に WP_MEMORY_LIMIT を足す。増えない場合はサーバー会社の上限 |
| Contact Form 7 を 6.2 に更新した直後 | Composer detected issues in your platform | PHP が 8.3 未満のサーバーに 6.2 が入っている。contact-form-7 のフォルダ名を変えて止め、PHP を 8.3 に上げてから戻す(Contact Form 7 の記事) |
一番多いPHPの件だけ補足します。サーバー会社は古いPHPを順に終了するので、「元に戻す」は時間稼ぎです。戻したうえで、本体・テーマ・プラグインを対応版に更新し、更新が止まっているプラグインは代替に替えてから、PHPをもう一度上げます。
メモリ不足のときは、wp-config.php の「編集が必要なのはここまでです」の行より上に次の1行を足します。
define( 'WP_MEMORY_LIMIT', '256M' );それでも同じエラーが出る場合は、サーバー側の上限に当たっています。レンタルサーバーのパネルで php.ini の memory_limit を見るか、サーバー会社に相談してください。



「戻せば直る」で終わると、半年後に同じ画面を見ます。PHPは下げたままにしないで、上げられる状態を作ってから上げる。そこまでが復旧です。
FTPに入れないときは画面と直前の操作だけ送る
ここまでの手順で、FTPのパスワードが分からない、ファイル名を変えるのが怖い、という方は多いです。その場合は、エラー画面のスクリーンショットと「直前に何をしたか」の2つだけ用意してください。原因の見当はそれでつきます。復旧モードのメールが届いていれば、その本文も一緒に。
こちらでは、原因のプラグインの特定と停止、表示の復旧、PHPとプラグインの対応関係の整理、対応版への更新までを一度にやります。PHPのバージョンアップと合わせて頼まれることが多いので、WordPress・PHPのバージョンアップ代行のページから相談していただけます。
よくある質問(FAQ)
- データは消えていませんか?
-
消えていません。この画面は、プログラムの読み込みが途中で止まった状態で、データベースの記事・画像・設定はそのままです。原因のプラグインかテーマを止めれば、元のまま表示されます。
- 復旧モードのメールが届きません。
-
WordPress本体は、ログイン画面か管理画面でエラーが起きたときだけメールを送ります。/wp-login.php を一度開いてから、迷惑メールフォルダも含めて確認してください。それでも来なければ、管理者メールアドレスが古いか、サーバーからのメールが届かない状態なので、FTPの手順に進みます。
- PHPのバージョンを戻せば直りますか?
-
多くの場合、表示は戻ります。ただしサーバー会社は古いPHPを順に終了するので、戻したままにはできません。戻した状態でプラグインとテーマを更新し、もう一度上げてください。
- サーバー会社に頼めば直してもらえますか?
-
レンタルサーバーのサポートは、サーバーの設定(PHPのバージョン、メモリ上限)までは見てくれますが、WordPressの中身(どのプラグインが原因か)は対象外のことがほとんどです。切り分けはこの記事の手順で自分でやるか、WordPressを扱う業者に頼みます。
- 直前に何もしていないのに出ました。
-
自動更新で本体かプラグインが更新された可能性が高いです。管理画面に入れるなら「ダッシュボード」→「更新」の履歴、入れないならサーバーのエラーログで、更新の時刻とエラーの時刻を見比べてください。心当たりがまったく無く、ログイン画面の見た目も変わっているなら、改ざんも疑います。
まとめ
- 「重大なエラー」はプラグインかテーマが止まっているだけで、データは消えていない
- まず /wp-admin/ を開く。入れれば無効化で終わり。入れなければ復旧モードのメールかFTP
- 復旧モードのメールは、ログイン画面か管理画面でエラーが起きたときだけ送られる。/wp-login.php を開いてから待つ
- メールが来なければ、FTPで原因のフォルダ名を変える。分からなければ plugins ごと
- 無効化は応急処置。PHPとプラグインの対応を整理して、更新か代替で根本を直す
- 復旧モードまたはFTPで原因のプラグイン・テーマを特定して停止
- 表示の復旧と、管理画面に入れる状態への回復
- PHPバージョンとプラグイン・テーマの対応状況の整理
- 対応版への更新、または代替への差し替え
- 再発しないよう自動更新・バックアップの設定を確認
合同会社キューブリック まずは状況をお聞かせください。作業前に内容と金額をお伝えし、追加料金はいただきません。
代表社員 / WEBエンジニアまずはエラー画面のスクリーンショットと、直前に何をしたかを教えてください。見てすぐ直せるものは、その場でお伝えします。相見積もり歓迎・営業の電話・メールはしません。

