
- PHP 8.1は2025年12月31日にサポートが終わりました。8.1以前のバージョンには、脆弱性が見つかっても公式の修正版が出ません。
- 8.2も2026年12月31日に終わります。いま切り替えるなら、8.4か8.5が目安です。
- バージョンを上げると、古いテーマ・プラグイン・独自のプログラムが動かなくなることがあります。検証環境で確かめてから本番を切り替え、戻し方も決めておきます。
- 今のサーバーで新しいPHPを選べないときは、サーバーの引っ越しが必要です。
PHPのサポート期限
PHPは、バージョン(8.4、8.5などの系列)ごとにサポート期間が決まっています。php.netによると、最初のリリースから2年間は「アクティブサポート」で、報告されたバグとセキュリティの問題が定期的に修正されます。その後の2年間は、重大なセキュリティの問題だけを必要に応じて修正します[php.net]。合わせて約4年でサポートが終わります。

| バージョン | 最初のリリース | アクティブサポート終了 | セキュリティサポート終了 |
|---|---|---|---|
| 8.5 | 2025年11月20日 | 2027年12月31日 | 2029年12月31日 |
| 8.4 | 2024年11月21日 | 2026年12月31日 | 2028年12月31日 |
| 8.3 | 2023年11月23日 | 2025年12月31日 | 2027年12月31日 |
| 8.2 | 2022年12月8日 | 2024年12月31日 | 2026年12月31日 |
| 8.1 | 2025年12月31日に終了(最終版8.1.34) | ||
| 8.0 | 2023年11月26日に終了(最終版8.0.30) | ||
| 7.4 | 2022年11月28日に終了(最終版7.4.33) | ||
7.3以前もすべてサポートが終わっています(7.3は2021年12月6日、5.6は2018年12月31日に終了)[php.net]。自社サイトのバージョンが分からない場合は、「PHPのバージョンを確認する方法」を参考に確かめてください。
8.1以前を使い続けるリスク
脆弱性が見つかっても直らない
サポートが終わったバージョンには、セキュリティの修正もバグの修正も出ません。php.netは、終了したバージョンを使っている人に対し、新しいバージョンへの更新を強く勧めています。古いバージョンのままだと、新しいバージョンでは修正済みの脆弱性やバグにさらされるおそれがあるためです[php.net]。
サイトの見た目や動きに変化がないので、気づかないうちに危険な状態が続きます。WordPressやプラグインを最新にしていても、サーバーのPHPが古ければ、PHP本体の脆弱性は残ったままです。
今回のphp2shellでも修正の対象外になる見込み
2026年10月21日、PHP公式はCritical(致命的)な脆弱性2件を修正するセキュリティリリースを予告しました。どちらもCVSS 4.0で9.2です[php.net]。影響するバージョンと修正版は、リリースと同時に公開されます。
サポート終了の方針から考えると、8.1以前に修正版が出る見込みはほとんどありません(今回の件についてPHP公式が明言したわけではありません)。海外の調査では、バージョンが分かる公開サーバーの59%が8.1以前だったと報じられています[abgeo.dev(Shodanのデータをもとにした調査の紹介)]。詳しくはphp2shellの解説記事をご覧ください。
WordPressも古いPHPを推奨していない
WordPressは、動作環境としてPHP 8.3以上を推奨しています。PHP 7.4以上の古い環境でも動きますが、公式のサポートが終わったPHPを使うと、セキュリティ上のリスクがあるとしています[WordPress.org]。
8.2のセキュリティサポートは2026年12月31日で終わります[php.net]。8.1以前から上げるなら、8.2で止めずに8.4か8.5まで上げると、次の切り替えまでの期間を長く取れます。
バージョンアップで壊れやすいところ
PHPは、新しいバージョンで動きが変わったり、古い書き方が使えなくなったりします。php.netの移行ガイド(Migration Guide)には、バージョンごとの非互換(前のバージョンと同じようには動かない変更)と、非推奨(今は動くが警告が出て、将来は使えなくなる機能)が載っています。次の図は、その中から影響が出やすいものを抜き出したものです。

7.4 → 8.0:動きが変わる、使えなくなる関数がある
- 数値と、数字でない文字列の比較が変わりました。たとえば
0 == "foo"は、これまでtrueでしたが8.0からfalseになります。条件分岐の結果が変わることがあります。 each()とcreate_function()が削除されました。古いテーマやプラグインで使われていると、エラーで止まります。@演算子で致命的エラーを隠せなくなりました。matchが予約語になり、関数名などに使えなくなりました。
8.0 → 8.1:警告が増える、データベースまわりの動きが変わる
- 組み込み関数にnullを渡すと、非推奨の警告が出るようになりました。
- mysqli(MySQLに接続する機能)のエラー処理が、既定で例外を投げる方式に変わりました。
htmlspecialchars()などの既定の動きが変わり、'も変換されるようになりました。strftime()などの日付関数が非推奨になりました。
8.1 → 8.2:古いクラスの書き方に警告
- クラスで宣言していないプロパティを後から作る書き方(動的プロパティ)が非推奨になりました。
utf8_encode()とutf8_decode()が非推奨になりました。- 文字列の中で
"${var}"と書く形の埋め込みが非推奨になりました。 strtolower()などが、ロケール(言語や地域の設定)に関係なく動くようになりました。
8.3 → 8.4:引数の型の書き方に警告
- 既定値がnullの引数で、型にnullを明示しない書き方(例:
function f(T $a = null))が非推奨になりました。 E_STRICT定数や、一部のセッション設定の変更が非推奨になりました。
非推奨の警告だけならサイトは動き続けますが、表示の設定によっては画面に警告が出ます。WordPress本体にも、新しいPHPに対応したバージョンが必要です。WordPressの開発チームの資料では、PHP 8.4にはWordPress 6.7から、8.5には6.9から対応しています[make.wordpress.org]。
サーバー会社のマニュアルにも、切り替え後のトラブルが載っています。ロリポップは、PHPの切り替え後にデータベースへの接続エラーが出た場合、データベースのパスワードの形式を変える必要があるとしています[ロリポップ!マニュアル]。KAGOYAは、PHP 5.6以降で既定の文字コードがUTF-8になったため、古いバージョンから変えると文字化けやレイアウトの崩れが起きることがあるとしています[KAGOYA FAQ]。
バージョンアップの進め方
いきなり本番のサイトで切り替えると、表示が崩れたり、フォームが送れなくなったりしたときに、すぐには直せません。次の順で進めます。

- 棚卸しとバックアップ:今のPHPとWordPressのバージョン、使っているテーマとプラグインを書き出します。WordPressのサイトヘルスの「情報」タブで一覧を確認できます[WordPress.org]。ファイルとデータベースを丸ごとバックアップします。
- 検証環境で切り替える:本番と同じ内容のコピーを別の場所に作り、そちらでPHPを切り替えます。先にWordPress本体・テーマ・プラグインを新しいPHPに対応したバージョンに更新しておきます。
- 動作とログを確認する:トップページ、主要なページ、問い合わせフォームの送信、ログイン、管理画面、決済などを一通り試します。PHPのエラーログに、致命的エラーや非推奨の警告が出ていないかも見ます。不具合があれば、プラグインの入れ替えやプログラムの修正をして、もう一度確かめます。
- 本番を切り替える:アクセスの少ない時間帯に行います。サーバー会社によっては、切り替えのときにWebサーバーが数秒止まったり(KAGOYAは5秒ほど)、反映まで数分かかったり(ロリポップは5〜10分ほど)します[各社マニュアル]。
- 本番で同じ確認をする:検証環境で試した項目を、本番でもう一度確かめます。
切り戻しの方法を先に決めておく
本番で問題が出たときに戻す方法を、切り替える前に確かめておきます。さくらのレンタルサーバは、古いバージョンを選び直せば元の環境に戻せるとしています[さくらのサポート情報]。一方、ロリポップは、PHP 7.1未満から上げた場合は元に戻せないとしています[ロリポップ!マニュアル]。元に戻せない場合に備えて、バックアップと検証環境での確認がいっそう大切です。
ただし、サポートが終わったバージョンに戻すのは一時しのぎです。原因を直したら、改めて切り替えてください。
新しいPHPを選べないときは引っ越し
契約が古いサーバーやプランでは、新しいPHPを選べないことがあります。たとえばさくらのレンタルサーバでは、PHP 8.2を使うにはFreeBSD 11.1以降のサーバーである必要があります[さくらのサポート情報]。管理画面の選択肢に8.4や8.5がない場合は、まずサーバー会社に、新しいサーバーへの移行方法を確認します。
それでも難しい場合は、新しいサーバーに引っ越します。進め方はバージョンアップと同じです。新しいサーバーにPHP 8.4・8.5の環境を用意してサイトを移し、動作を確かめてから、DNS(ドメインとサーバーを結びつける設定)を切り替えます。古いサーバーは、新しいサーバーで問題がないと確かめるまで残しておくと、いざというときに戻せます。
よくある質問
8.1以前のままでも、今のところ問題なく動いています
見た目や動作に問題がなくても、新しく見つかった脆弱性は修正されません。今回のphp2shellのように、深刻な脆弱性が見つかったときに打つ手がなくなります。
どのバージョンに上げればよいですか?
サポート期間が長い8.4(2028年12月31日まで)か8.5(2029年12月31日まで)が目安です。使っているプラグインやプログラムが対応しているかを確かめて選びます。
自社でプログラムを書いていないので、関係ありますか?
WordPressのテーマやプラグイン、制作会社が作った問い合わせフォームなどもPHPで書かれています。どれか一つでも新しいPHPに対応していないと、サイトの一部が動かなくなることがあります。
検証環境での確認、プラグインやプログラムの修正、本番の切り替え、新しいサーバーへの引っ越しまでお受けします。無料相談はこちら
参考にした情報
- php.net「Supported Versions」 / 「Unsupported Branches」 / セキュリティリリースの告知
- php.net移行ガイド:8.0の非互換 / 8.1の非互換 / 8.1の非推奨 / 8.2の非互換 / 8.2の非推奨 / 8.4の非推奨
- WordPress.org「Requirements」 / 「PHP Compatibility and WordPress Versions」 / 「Site Health screen」
- さくらのサポート情報「PHPのバージョンを変更したい」
- ロリポップ!マニュアル「PHP設定」
- KAGOYAサポート「PHPバージョンの変更」 / FAQ「PHPバージョン変更後、レイアウトが崩れたり文字化けが発生する」
- abgeo.dev(二次情報)