PHPを上げたらWordPressサイトが壊れたときの対処法。真っ白・重大なエラー・警告表示の直し方

PHPを上げたらWordPressサイトが壊れたときの対処法。真っ白・重大なエラー・警告表示の直し方

この記事を約3分で解説

音声:VOICEVOX:ずんだもん

PHP 8.2のサポート終了やPHPの脆弱性「PHP2Shell」をきっかけに、サーバーのPHPを上げたら、サイトが真っ白になった、「このサイトで重大なエラーが発生しました」と表示された――。

焦る場面ですが、PHPの切り替えが原因の不具合は、多くの場合、元に戻せば表示は復旧します。そのうえで原因を調べれば、ほとんどは直せます。

この記事では、PHPを上げてWordPressサイトが壊れたときに、まずやること、原因の調べ方、よくある原因と直し方を順番に解説します。

まず結論:壊れたときの対処の順番

  1. PHPを元のバージョンに戻して、サイトを復旧させる
  2. エラーの内容を確認する(WordPressから届くメール、エラーログ)
  3. 原因のプラグインやテーマを特定する
  4. 更新・置き換え・修正をしてから、もう一度PHPを上げる

元のPHPに戻すのは、あくまで一時的な対処です。古いPHPはサポートが終わっている、またはまもなく終わるため、原因を直して新しいPHPに移ることがゴールです。

「元に戻しても直らない」「原因が分からない」という方へ
C-TechLabでは、PHPのバージョンアップで壊れたWordPressサイトの調査・復旧を代行しています。初回のご相談は無料です。

無料で相談する →

よくある症状と、考えられる原因

症状考えられる原因
画面が真っ白になるプラグインやテーマが、新しいPHPで動かない書き方をしていて、処理が止まっている
「このサイトで重大なエラーが発生しました」と表示される同上。WordPressがエラーを検知して、この画面を出している
「Deprecated」「Warning」などの英語の文字が画面に出る新しいPHPで非推奨になった書き方への警告。エラーを画面に出す設定になっている
「データベース接続確立エラー」と表示されるサーバーによっては、PHPの切り替えでデータベースのパスワードの形式が合わなくなる
表示はできるが、フォームが送れない・管理画面の一部が動かない特定のプラグインの一部の処理だけが、新しいPHPで動かない
管理画面に「お使いのPHPバージョンでは動作しません」と出るプラグインやテーマが、その版のPHPに対応していない(古すぎる、または新しすぎる)

1. まずはPHPを元のバージョンに戻す

サイトが表示されない状態が続くと、お客様や取引先に迷惑がかかります。原因を調べる前に、サーバーの管理画面でPHPを元のバージョンに戻して、サイトを復旧させましょう。

戻し方は、PHPを上げたときと同じ画面で、以前のバージョンを選び直すだけです。各社の画面の場所は「レンタルサーバー別・PHPバージョンの変更手順」にまとめています。

ただし、次の点に注意してください。

  • ロリポップ!では、PHP 7.1より前のバージョンから上げた場合、元に戻せません
  • サーバー会社が提供を終えた古いバージョンは、選べなくなっていることがあります
  • 古いPHPに戻すと、PHP2Shellなどの脆弱性の修正がサーバー会社任せになります。多くのレンタルサーバーは古いPHPにも修正を当てていますが、戻したままにはせず、早めに原因を直しましょう(各社の対応は「PHP 7.4/8.1のまま更新できないサイトはどうする?」)

元に戻しても直らない場合は、PHP以外の変更(同時に行ったプラグインの更新など)が原因の可能性があります。作業前に取ったバックアップから復元してください。

2. エラーの内容を確認する

原因を探すには、どのファイルでエラーが起きたかを知るのが近道です。次の方法で確認できます。

WordPressから届くメールを確認する

WordPressは、重大なエラーを検知すると、サイトの管理者のメールアドレスに「サイトで技術的な問題が発生しています」という件名のメールを送ります。

このメールには、次の情報が書かれています。

  • エラーの原因になったプラグインやテーマの名前
  • エラーの詳しい内容(ファイル名と行番号)
  • リカバリーモードでログインするためのリンク

リカバリーモードでログインすると、エラーの原因になったプラグインやテーマが一時的に止まった状態で管理画面に入れます。そこで原因のプラグインを無効化すれば、新しいPHPのままでもサイトを表示できるようになることがあります。

エラーログを確認する

メールが届かない場合は、エラーログを確認します。

  • サーバーのエラーログ:多くのレンタルサーバーでは、管理画面からPHPやWebサーバーのエラーログを見られます
  • WordPressのデバッグログ:wp-config.php に次の設定を書くと、wp-content/debug.log にエラーが記録されます
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

WP_DEBUG_DISPLAY を false にしておくと、エラーを画面には出さずに、ファイルにだけ記録できます。調査が終わったら、WP_DEBUG を false に戻し、debug.log を削除してください。そのままにしておくと、ログが外部から見られるおそれがあります。

エラーの読み方

エラーログには、たとえば次のような行が記録されます。

PHP Fatal error: Uncaught Error: Call to undefined function create_function()
in /home/example/public_html/wp-content/plugins/old-slider/old-slider.php:120

注目するのは、wp-content/plugins/ や wp-content/themes/ のあとに続くフォルダ名です。この例では、old-slider というプラグインが原因だと分かります。

3. 原因のプラグインやテーマを特定する

エラーの内容から原因が分からない場合や、管理画面に入れない場合は、プラグインを1つずつ止めて原因を探します。

管理画面に入れる場合

  1. 「プラグイン」の画面で、すべてのプラグインを無効化する
  2. 新しいPHPで、サイトが表示されるかを確認する
  3. プラグインを1つずつ有効化し、表示が壊れたところで止める。最後に有効化したものが原因です

テーマが原因の場合は、WordPressの標準テーマ(Twenty Twenty-Fiveなど)に一時的に切り替えて確認します。

管理画面に入れない場合

FTPソフトやサーバーのファイルマネージャーで、プラグインのフォルダの名前を変えると、そのプラグインを止められます。

  1. wp-content/plugins/ を開く
  2. 原因と思われるプラグインのフォルダ名を、old-slider → old-slider-off のように変える
  3. サイトが表示されるかを確認する

原因が分からないときは、plugins フォルダごと plugins-off に名前を変えると、すべてのプラグインを一度に止められます。確認が終わったら、フォルダ名は必ず元に戻してください。

4. よくある原因と直し方

PHP 8.0以降で使えなくなった書き方

PHP 7.x以前から8.x に上げた場合に、最も多い原因です。PHP 8.0では、長い間「非推奨」とされていた書き方が削除され、使っているとエラーで処理が止まるようになりました。

使えなくなった書き方起きること
create_function() 関数「Call to undefined function create_function()」というエラーで止まる
each() 関数「Call to undefined function each()」というエラーで止まる
数えられない値に count() を使う「count(): Argument #1 … must be of type Countable
PHP 7.0で削除された mysql_ で始まる関数「Call to undefined function mysql_connect()」などのエラーで止まる(PHP 5系から上げた場合)

これらは、プラグインやテーマが古いまま更新されていないことが原因です。次の順で対応します。

  1. プラグイン・テーマを最新版に更新する。多くの場合、新しい版では直っています
  2. 最新版でも直らない、または開発が止まっている場合は、代わりのプラグインに置き換える
  3. 制作会社が独自に作ったテーマの場合は、コードの修正が必要です。制作会社か、PHPを扱える開発者に依頼してください

警告(Deprecated/Warning)が画面に表示される

PHP 8.2以降では、古い書き方に対して「非推奨(Deprecated)」の警告が出やすくなっています。警告は処理を止めるものではないため、多くの場合サイトは動いていますが、エラーを画面に出す設定になっていると、文字がそのまま表示されて見た目が崩れます。

  • 応急処置:wp-config.php で WP_DEBUG を false にする。サーバーの php.ini の設定で display_errors を Off にする
  • 根本的な対処:警告の出ているプラグイン・テーマを更新するか、置き換える

警告は、将来のPHPでエラーになる予告でもあります。消して終わりにせず、原因のプラグインやテーマを把握しておきましょう。PHP 8.2〜8.4で非推奨になった主な書き方は、「PHP 8.2のサポート終了は2026年12月31日」の表にまとめています。

「データベース接続確立エラー」が出る

PHPの切り替えのあとにこのエラーが出る場合、データベースのパスワードの形式が新しいPHPと合っていない可能性があります。ロリポップ!では、PHPのバージョン変更後にこのエラーが出た場合、データベースのパスワードを再設定するよう案内されています。

パスワードを再設定したら、WordPressの wp-config.php に書かれているパスワード(DB_PASSWORD)も新しいものに書き換えてください。ほかのサーバーでも同じエラーが出る場合は、サーバー会社に問い合わせましょう。

プラグインが「このPHPバージョンでは動作しません」と表示する

プラグインの中には、対応するPHPのバージョンを決めていて、それ以外では動かないようにしているものがあります。新しいPHPに対応した版が出ていないか確認し、出ていなければ代わりのプラグインを探します。

逆に、古いPHPのままだと、プラグインの最新版に更新できないこともあります。新しいPHPに切り替えたら、もう一度プラグインの更新がないかを確認してください。

5. 直したら、もう一度PHPを上げる

原因を直したら、改めてPHPを新しいバージョンに切り替えます。今度は、次の手順で進めると安全です。

  1. バックアップを取る
  2. テスト環境(ステージング)で先に新しいPHPを試す
  3. アクセスの少ない時間帯に、本番のPHPを切り替える
  4. トップページ、フォーム、管理画面を確認する

移行の進め方は「PHP 8.2のサポート終了は2026年12月31日」で詳しく解説しています。

自分で直すのが難しいとき

次のような場合は、無理に自分で直そうとせず、制作会社や専門家に相談してください。

  • 独自に作られたテーマで、コードの修正が必要
  • 原因のプラグインに代わりがなく、サイトの重要な機能を担っている
  • 元に戻しても直らない、バックアップがない
  • 管理画面にもサーバーにも入れない

制作会社への連絡には、「PHPの対応を制作会社・サーバー会社に依頼するときの文例テンプレート」の文例4がそのまま使えます。

C-TechLabにできること

C-TechLabでは、PHPのバージョンアップで壊れたWordPressサイトの復旧と、その後の保守を引き受けています。

  • 緊急の復旧:PHPの切り戻しやバックアップからの復元で、まずサイトを表示できる状態に戻します
  • 原因の調査:エラーログを読み、原因のプラグイン・テーマ・コードを特定します
  • 修正・置き換え:独自テーマのコード修正や、開発が止まったプラグインの置き換えを行います
  • 新しいPHPへの移行:テスト環境で確認したうえで、改めて新しいPHPに切り替えます

ほかの会社が作ったサイトでも対応できます。代表エンジニアが直接、状況を伺います。詳しくはホームページ運用保守・バージョンアップのページもご覧ください。

よくある質問

PHPを上げたらサイトが真っ白になりました。まず何をすればいいですか?

まずはサーバーの管理画面で、PHPを元のバージョンに戻してください。多くの場合、それでサイトの表示は復旧します。そのうえで、WordPressから届くエラーのメールやエラーログを確認し、原因のプラグインやテーマを特定してから、改めてPHPを上げます。

「このサイトで重大なエラーが発生しました」と表示されます。どうすればいいですか?

WordPressの管理者のメールアドレスに、「サイトで技術的な問題が発生しています」という件名のメールが届いていないか確認してください。原因のプラグインやテーマの名前と、リカバリーモードでログインするためのリンクが書かれています。リカバリーモードで原因のプラグインを無効化すると、サイトを表示できるようになることがあります。

古いPHPに戻したままでも大丈夫ですか?

一時的な対処としては問題ありませんが、戻したままにはしないでください。PHP 8.1以前はすでにサポートが終わっていて、PHP 8.2も2026年12月31日に終わります。原因のプラグインやテーマを直したうえで、新しいPHPに移りましょう。

画面に「Deprecated」という英語が表示されます。壊れているのですか?

Deprecatedは「非推奨」という意味の警告で、処理は止まっていないことがほとんどです。ただし、本番サイトに表示されるのは見た目の面でも安全の面でも好ましくないため、エラーを画面に出さない設定にしたうえで、警告の出ているプラグインやテーマを更新・置き換えしてください。

プラグインを全部止めても直りません。どうすればいいですか?

テーマが原因の可能性があります。WordPressの標準テーマに一時的に切り替えて確認してください。それでも直らない場合は、WordPress本体が古い、サーバーの設定に問題があるなどの可能性もあります。バックアップから復元したうえで、専門家に相談することをおすすめします。

参考情報