K1派生 重大なエラー 2026年10月22日

PHPのバージョンを上げたらWordPressが表示されない・エラーになるときの直し方

XECIN WordPressPHP緊急復旧バージョンアップ

2026年10月、PHPに重大な脆弱性が見つかりました(解説記事)。PHP 8.1以前には公式の修正版が出ないため、レンタルサーバーの管理画面でPHPのバージョンを上げるサイトが増えています。ところが、上げた直後に「このサイトで重大なエラーが発生しました」と表示される、画面が真っ白になる、といったトラブルがよく起きます。

原因の多くは、古いプラグインやテーマ、WordPress本体が新しいPHPに対応していないことです。上から順に切り分ければ、自分で直せるケースも少なくありません。

⚠️ ファイルを書き換える前に、必ずバックアップを取ってください(バックアップと復元の手順)。また、エラーを避けるために古いPHP(8.1以前)へ戻した状態は、今回の脆弱性に対して無防備なままです。戻すのは原因を調べるあいだだけにしてください。

まず確認:今どの状態ですか

  • 表示は崩れたが /wp-admin には入れる → 手順3(プラグイン・テーマ)と手順4(WordPress本体)の更新が早道
  • 「重大なエラー」で /wp-admin にも入れない → 手順1(いったん戻す)→ 手順2(ログで特定)
  • 管理者あてに「サイトで技術的な問題が発生しています」というメールが届いた → メール内のリンクから「復旧モード」に入れる(重大なエラーの対処ガイド)
  • 真っ白で何も表示されない → 手順2でエラーログを確認(真っ白になるときの切り分けも参照)
  • ページの上に「Deprecated」「Warning」という英文が出ている → 止まる種類のエラーではありません(よくある質問を参照)

なぜPHPを上げると壊れるのか

PHPは新しいバージョンで古い書き方を「非推奨(Deprecated)」にし、その後のバージョンで削除します。削除された書き方が残っているプラグインやテーマは、PHPを上げた瞬間に致命的エラーで止まります。WordPressで特に止まりやすいのは、7.4から8.0以上へ上げるときです。

上げ方起きやすいこと典型的な原因
7.4 → 8.0以上致命的エラーで止まる8.0で削除された create_function() や each() を呼ぶ古いプラグイン、波かっこで文字列の1文字を取り出す古い書き方が残るテーマ
8.0 → 8.1以上動作は続くが、非推奨の警告が大量に出る組み込み関数に null を渡す古いコード(8.1で非推奨)
8.1 → 8.2以上動作は続くが、非推奨の警告が出るクラスに宣言していないプロパティを後から足す古いコード(8.2で非推奨)

もうひとつ見落としやすいのが、WordPress本体の版です。WordPress公式の互換表では、新しいPHPを使うには、次の版以上のWordPressが必要です。

使いたいPHP必要なWordPressの版
8.26.1以上
8.36.4以上
8.46.7以上
8.56.9以上

WordPress本体の更新を長く止めているサイトは、プラグインより先に本体が引っかかります。

対処手順

手順1 いったん元のPHPバージョンに戻すかを決める

レンタルサーバーの管理画面で、切り替える前のPHPバージョンに戻すと、多くの場合はすぐに表示が戻ります。ただし、戻す先によって扱いが変わります。

  • 8.2以上に戻す場合:修正版(8.2.35 / 8.3.36 など)が適用されていれば、しばらく使っても大丈夫です。落ち着いて手順2以降を進めます
  • 8.1以前に戻す場合:PHP公式の修正版はありません。サーバー会社が独自の修正を当てているかを確認し、戻すのは原因を調べるあいだだけにします

手順2 エラーログで原因を特定する

wp-config.php の「編集が必要なのはここまでです」と書かれた行の上に次の3行を追記すると、エラーの内容が wp-content/debug.log に記録されます。

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );    // wp-content/debug.log に記録する
define( 'WP_DEBUG_DISPLAY', false ); // 画面には表示しない

ログは、エラーが出ている状態でサイトを開いたときに記録されます。手順1で元に戻した場合は、ステージング(テスト環境)の機能があればそちらで新しいPHPに切り替えて開くのが安全です。ない場合は、アクセスの少ない時間帯に一度だけ切り替えてサイトを開き、ログを取ってから戻します。

PHPのバージョンが原因のときは、たとえば次のような行が見つかります。

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

PHP Fatal error:  Array and string offset access syntax with curly braces is no longer supported
  in /home/.../wp-content/themes/old-theme/functions.php on line 120

PHP Deprecated:  Creation of dynamic property Old_Widget::$title is deprecated
  in /home/.../wp-content/plugins/old-widget/class-old-widget.php on line 33

Fatal error の行に含まれる plugins/ や themes/ のフォルダ名が、サイトを止めている原因です。Deprecated の行は警告で、サイトが止まる原因ではありません。

⚠️ 原因が分かったら、WP_DEBUG は必ず false に戻してください。true のまま公開し続けると、サーバー内のパスなどが外部に漏れるおそれがあります。

手順3 原因のプラグイン・テーマを更新する、または入れ替える

  • 管理画面に入れる場合:「プラグイン」「外観 → テーマ」から最新版に更新します
  • 管理画面に入れない場合:FTPやファイルマネージャで、原因のフォルダ名を変えて無効化します(やり方は重大なエラーの対処ガイドの手順3・4)
  • 更新が来ていない場合:WordPress.orgのプラグインのページで「最終更新」を確認します。何年も更新されていないプラグインは、PHPを上げるたびに同じことが起きるため、更新が続いている代わりのプラグインへ移るのが安全です

手順4 WordPress本体を新しくする

前の表のとおり、WordPress本体が古いと新しいPHPに対応していません。「ダッシュボード → 更新」から最新版に更新します。本体の更新前にもバックアップを取ってください。

手順5 もう一度PHPを上げて確認する

次の順で進めると、同じトラブルを繰り返しにくくなります。

  1. バックアップを取る(ファイルとデータベースの両方)
  2. WordPress本体・テーマ・プラグインを最新にする
  3. ステージングがあれば、先にそちらでPHPを切り替えて確認する
  4. 本番のPHPを切り替える
  5. すぐに次の「直ったか確認する」を行う

どのバージョンに上げればいいか

  • WordPress公式が推奨しているのは PHP 8.3以上 です
  • PHP 8.2は 2026年12月31日でサポートが終わります。いま8.2に上げると、2か月後にまた同じ作業が必要になります
  • レンタルサーバーで選べる範囲で、プラグインが対応していれば 8.3以上 を選んでください(8.3のセキュリティサポートは2027年12月31日まで、8.4は2028年12月31日まで)

直ったか確認する

  • トップページ、よく見られているページ、/wp-admin へのログイン
  • 問い合わせフォームの送信(メールが届くところまで)
  • debug.log に新しい Fatal error が出ていないか
  • 手順2で追記した WP_DEBUG を false に戻したか
  • 無効化のために名前を変えたフォルダを、元に戻したか(または削除したか)

よくある質問

画面の上に「Deprecated」「Warning」と英文が表示されます

致命的なエラーではなく、「この書き方は将来使えなくなる」という警告です。ただ、訪問者に見せるものではありません。wp-config.php の WP_DEBUG が true のままなら false に戻します。それでも表示される場合は、レンタルサーバーのPHP設定で display_errors を Off にします。根本的には、警告を出しているプラグイン・テーマを更新してください。

古いPHPのまま使い続けてはいけませんか?

PHP 8.1以前には、PHP公式のセキュリティ修正が出ません。2026年10月の脆弱性のように、ログインなしで外部から乗っ取られうる問題が見つかっても、直す版が出ないということです。サーバー会社の独自対応は一時的な措置と考え、計画的に上げてください。

この作業を何度も繰り返したくありません

PHPやWordPressの更新に追われる構成そのものを見直す方法もあります。ページの配信にPHPを使わない静的な構成なら、PHPの脆弱性やバージョンアップの影響を受けません(AI Web Platform)。

自分で直せない・時間がありません

「お客様に見せている最中」など一刻を争う場面では、無理に操作せずご相談ください。当社では最短即日での復旧をサポートしています。