株式会社Devote代表の高橋です。
ホームページの多くは、「PHP」というプログラミング言語(コンピューターへの命令を書くための言葉)で動いています。WordPressもそのひとつです。このPHPのバージョンを上げたとたん、表示が崩れたり、画面が真っ白になったりすることがあります。
2026年10月21日(日本時間)には、PHPの重大な脆弱性(セキュリティ上の弱点)を直した修正版が公開されました。悪用されると、サーバーの上で勝手にプログラムを動かされるおそれがある内容です。この記事は少し技術寄りですが、専門用語にはかっこで説明をつけています。
この記事でわかること
- PHPを上げるとサイトが壊れることがある理由
- 新しいPHPで使えなくなった書き方の例
- バージョンを上げる前に確かめておくこと
- 表示が崩れたときの直し方の考え方
1. PHPを上げると、古い書き方が読めなくなる
サイトが壊れるのは、プログラムの中に、新しいPHPでは使えない古い書き方が残っているためです。
WordPress本体も、見た目を決めるテーマも、機能を足すプラグインも、中身はPHPで書かれています。PHPは数年ごとに新しいバージョンが出て、そのたびに古い書き方が整理されます。整理は次の順番で進みます。
- 「非推奨」(いずれ使えなくなる予定なので、使わないでくださいという扱い)になる
- その後のバージョンで削除される
- 削除された書き方が残っていると、新しいPHPでは読み取れず、そこで処理が止まる
たとえるなら、古い言い回しの説明書を、新しい世代の人が読むようなものです。もう使われていない言葉が出てくると、そこで手が止まってしまいます。
2. 新しいPHPで使えなくなった書き方の例
特に影響が大きいのはPHP 8.0です。それまで警告で済んでいた問題の多くが、エラーで止まるようになりました。
WordPressの古いテーマやプラグインでよく見かけるのは、次のような書き方です。
| バージョン | 変わったこと | 扱い |
|---|---|---|
| PHP 7.0 | mysql_ で始まる古いデータベース用の関数(決まった処理をひとまとめにした命令) | 削除 |
| PHP 8.0 | each() と create_function() | 削除(7.2から非推奨) |
| PHP 8.0 | 文字列から波かっこで1文字を取り出す書き方($str{0}) | 使えなくなった(7.4から非推奨) |
| PHP 8.0 | 以前は警告を出すだけで先へ進んでいた多くの問題 | エラーで止まるようになった |
| PHP 8.1 | nullを受け付けない内部関数(PHPに最初から入っている関数)に、null(値が空の状態)を渡すこと | 非推奨(警告が出る) |
| PHP 8.2 | 動的プロパティ(クラスに宣言していないプロパティを後から作ること) | 非推奨 |
表の中の「クラス」はプログラムの部品の設計図、「プロパティ」はその部品が持つ値のことです。
7系では何となく動いていたサイトが、8系に上げたとたんに真っ白になる。よくある原因のひとつが、8.0の「警告からエラーへ」の変化です。
8.1と8.2の変更は非推奨の段階で、すぐに止まるわけではありません。ただ、設定によっては画面に警告の文が出たり、エラーログ(サーバーが残すエラーの記録)が警告で埋まったりします。
3. 更新が止まったテーマやプラグインほど、つまずきやすい
使えなくなる書き方は、多くの場合、前もって非推奨として予告されています。開発が続いているものは更新で対応してくれるため、問題になるのは更新が止まっているものです。
古い書き方が残りやすいのは、次のようなものです。
- 作者が開発をやめたプラグイン
- 制作会社がそのサイトのために作り、その後は手を入れていないテーマ
- 配布されているテーマを直接書き換えたため、更新すると変更が消えてしまい、更新できなくなっているテーマ
上げる幅が大きいほど、直す場所が増える
弊社にも、PHPを5.4から8.3へ一気に上げたところ、表示が崩れてしまったサイトのご相談がありました。5.4のころの書き方には、7系や8系で使えなくなったものが多く含まれます。少しずつ上げていれば分けて対応できた作業が、一度にまとめて出てきます。
エラーの原因が、別のところにあることもある
PHPを上げたあとにエラーが出たサイトでは、はじめはカレンダーのプラグインが合っていないように見えました。調べ直すと、本当の原因はWordPress本体がPHPのバージョンに合っていなかったこと(あるいは、過去の更新がうまくいかずファイルが壊れていた可能性)でした。このときの対応は次のとおりです。
- バックアップを取る
- WordPress本体のファイルを入れ替え、更新する
- 原因になっていたプラグインを止める
- お客さまに表示を確かめていただく
こうした例は実際の事例をまとめた記事でも紹介しています。
4. バージョンを上げる前に確かめておくこと
上げる前に、今のバージョン、テーマとプラグインの状態、元に戻せる準備を確かめます。見る場所は次のとおりです。
| 確かめること | 見る場所・やり方 |
|---|---|
| 今のPHPのバージョン | WordPressの管理画面の「ツール」→「サイトヘルス」→「情報」→「サーバー」 |
| テーマ・プラグインの更新状況 | 管理画面の一覧で、更新が来ていないか、最後に更新されたのがいつか |
| プラグインに必要なPHPのバージョン | 公式サイトで配布されているプラグインのページ(必要なPHPのバージョンと最終更新日が書かれている) |
| 独自に作ったテーマ、書き換えたテーマ | 中のプログラムを開き、2の表にあるような書き方が残っていないか |
| 元に戻せる準備 | サイトのファイルとデータベース(記事や設定が入っている場所)のバックアップ、検証用の環境 |
バージョンの確認手順は、PHPのバージョンの確認手順のお知らせにもまとめています。
サポート期限と見比べる
バージョンが分かったら、サポート期限(PHPの開発チームがセキュリティの修正を出す最後の日)と見比べます。下の表には、2026年10月21日に出た修正版も入れています。
| バージョン | サポート期限 | 2026年10月21日の修正版 |
|---|---|---|
| PHP 7.4 | 2022年11月28日(終了) | なし |
| PHP 8.0 | 2023年11月26日(終了) | なし |
| PHP 8.1 | 2025年12月31日(終了) | なし |
| PHP 8.2 | 2026年12月31日 | 8.2.35 |
| PHP 8.3 | 2027年12月31日 | 8.3.36 |
| PHP 8.4 | 2028年12月31日 | 8.4.27 |
| PHP 8.5 | 2029年12月31日 | 8.5.12 |
今から上げるなら、8.3以上を目安にするとよいでしょう。8.2は修正版が出ていますが、2026年12月31日で期限を迎えます。
今回の脆弱性はPHPそのものの問題で、WordPressやプラグインを最新にしても防げません。JPCERT/CC(日本のセキュリティ情報の窓口)も注意喚起を出しています。
本番の前に、検証用の環境で試す
弊社では基本的に、作業の前にバックアップを取り、検証用の環境で新しいPHPでの表示と動作を確かめてから本番に反映しています。レンタルサーバーによっては、ステージング(本番を複製して試せる場所)を作れる機能もあります。
契約しているサーバーで新しいPHPが選べない場合は、サーバーを移ることも考えます。流れはサーバー移転の流れと注意点にまとめています。
5. 表示が崩れたときの、直し方の考え方
まず元に戻せるかを考え、次に原因の場所を探し、最後に直し方を選びます。進め方は次のとおりです。
- PHPのバージョンを戻せるか考える。多くのレンタルサーバーでは管理画面から戻せますが、サポートの切れたバージョンに戻すのは一時しのぎです
- エラーログで、どのファイルの何行目で止まったかを見る。ファイルの場所から、WordPress本体か、テーマか、どのプラグインかの見当がつきます
- ログが見られなければ、検証用の環境でプラグインを1つずつ止めて、どれで直るかを確かめる
- 原因に合わせて、直し方を選ぶ
先ほどのカレンダーの例のように、いちばんあやしく見えた場所が本当の原因とは限りません。思い込まずに、ひとつずつ確かめます。
原因が分かったあとの直し方は、おおむね次の表のように考えます。
| 原因の状態 | 直し方 |
|---|---|
| 更新が出ている | 新しいバージョンに更新する |
| 開発が止まっているプラグイン | 同じ働きをする別のプラグインに置きかえる |
| 独自に作ったテーマ | 使えなくなった書き方を、新しい書き方に直す |
| なくても困らない機能 | そのプラグインを止める |
プラグインを止めれば、そのプラグインが担っていた表示や機能もなくなります。作業のあとは、何が変わったのかを、サイトを使う人と一緒に確かめておきます。
まとめ
PHPを上げてサイトが壊れるのは、古い書き方が新しいPHPで読めなくなるためです。要点を振り返ります。
- PHP 8.0から、警告で済んでいた問題の多くがエラーで止まるようになった
- 更新が止まったテーマやプラグイン、上げる幅が大きいサイトほどつまずきやすい
- 8.1以前はサポートが終わっていて、10月21日の修正版も出ていない。上げるなら8.3以上が目安
- 上げる前にバックアップを取り、検証用の環境で確かめてから本番に反映する
- 崩れたら、エラーログで原因の場所を確かめてから直し方を選ぶ
弊社では、他社が作ったサイトも含めて、PHPのバージョンアップから月額の保守まで承っています。サイトの公開やリニューアルのときにもPHPのバージョンを確認し、上げる必要があれば、ご説明して了承をいただいてから上げています。
「うちのサイトは、今のPHPのままで大丈夫だろうか」
そのような場合は、1時間の無料相談をご利用ください。保守・運用サポートのページを見る
コーポレートサイト制作ならご相談ください。
デボートはクライアントの悩みを共に解決する伴走型のWeb制作会社です。「Webサイトで集客をしたい」「採用できない」「人手が足りない」といった悩みをお持ちなら、ぜひお気軽にご相談くださいませ。