PHP 8.0 / 8.1 は PHP2Shell で危険?修正版の有無と移行の手順
PHP 8.0 / 8.1 は PHP2Shell(CVE-2026-109618 / 109619)の影響を受ける。公式の修正版はない。公式の保守も終わっている。今やることと、移行で動かなくなる原因をまとめた。
PHP 8.0 / 8.1 は PHP2Shell で危険?修正版の有無と移行の手順
- PHP2Shell の影響:受ける
- 公式の修正版:出ていない
- 公式の保守:どれも終わっている
- 判定:危険
PHP2Shell で起きること
- ログインなしで、外部からサーバー上のプログラムを実行される
- いちばん危ないのは mod_php(Apache に PHP を組み込む方式)。アプリのプログラムが動く前に攻撃が届く実例がある
- 危険度は CVSS 4.0 で 9.2(10 点満点)
今やること
- PHP 8.4 か 8.5 へ移行する。
- 今のサーバーで 8.4 / 8.5 を選べなければ、新しいサーバーへ移す(サーバー移行)。
- 移行の前に、サイトをまるごとバックアップする。
移行で動かなくなる主な原因
PHP 8.0 / 8.1 から 8.4 へ移るときに、古いプラグインや古い書き方のプログラムで問題になりやすいもの(php.net の移行ガイドより)
ここを読む移行の手順
- サイトのファイルとデータベースを、まるごとバックアップする
- WordPress なら、本体・プラグイン・テーマを先に新しくする
- テスト用の環境で、新しい PHP で動くか試す
PHP 8.0 / 8.1 のサイトが PHP2Shell でどれだけ危ないか、修正版の有無、今やることをまとめた。数値はすべて php.net の公式情報にもとづく。
- PHP2Shell の影響:受ける
- 公式の修正版:出ていない
- 公式の保守:どれも終わっている
- 判定:危険
PHP 8.0 / 8.1 の状況
| 項目 | PHP 8.1 | PHP 8.0 |
|---|---|---|
| PHP2Shell の影響 | 影響あり | 影響あり |
| 公式の修正版 | なし | なし |
| 公式の保守 | 2025年12月31日に終了(最終版 8.1.34) | 2023年11月26日に終了(最終版 8.0.30) |
| 判定 | 危険 | 危険 |
- PHP 8.0 は公式の保守がすでに終わっていて、PHP2Shell の修正版は出ていません。
- サーバー会社が独自に修正を入れている場合もあるが、古い PHP は今後も同じことが起きる。
PHP2Shell で起きること
- ログインなしで、外部からサーバー上のプログラムを実行される
- いちばん危ないのは mod_php(Apache に PHP を組み込む方式)。アプリのプログラムが動く前に攻撃が届く実例がある
- 危険度は CVSS 4.0 で 9.2(10 点満点)
- CVE-2026-109618:メモリ不足の処理の途中で、作りかけのデータを正しいものとして扱ってしまう
- CVE-2026-109619:解放したはずのデータを、同じワーカーの次のリクエストが使ってしまう
今やること
- PHP 8.4 か 8.5 へ移行する。
- 今のサーバーで 8.4 / 8.5 を選べなければ、新しいサーバーへ移す(サーバー移行)。
- 移行の前に、サイトをまるごとバックアップする。
- 先にプラグインとテーマを新しくしておく(移行で壊れにくくなる)。
移行先は PHP 8.4 か 8.5
| 移行先 | 公開日 | 公式の保守 |
|---|---|---|
| PHP 8.4 | 2024年11月21日 | 2028年12月31日まで |
| PHP 8.5 | 2025年11月20日 | 2029年12月31日まで |
保守が長い版に移れば、次に脆弱性が見つかっても修正版を受け取れる。
今のサーバーで新しい PHP を選べないとき
古いサーバーや保守の終わった OS では、PHP 8.4 / 8.5 を選べないことがある。その場合は、新しいサーバーへサイトごと移す。手順は サーバー移行の手順 にまとめた。
7.4・8.0・8.1 向けの修正の部品(バックポート)は公式の告知からリンクされているが、正式な版としては出ていない。サーバー会社や延長サポートの会社が独自に修正を入れることもあるが、PHP 自体の保守は戻らない。移行までのつなぎと考える。
移行で動かなくなる主な原因
PHP 8.0 / 8.1 から 8.4 へ移るときに、古いプラグインや古い書き方のプログラムで問題になりやすいもの(php.net の移行ガイドより)。
8.0 から 8.1 への変更
- 内部関数に null を渡すと非推奨の警告(
strlen(null)など) htmlspecialchars()などの既定がENT_QUOTES | ENT_SUBSTITUTEに- MySQLi が既定でエラー時に例外を投げる
- PDO(MySQL・SQLite)が数値を文字列でなく int / float で返す
- 必須の引数より前にある、既定値つきの引数は必須扱い
8.3 から 8.4 への変更
E_STRICTの定数が非推奨- DBA・ODBC・SOAP の一部で
is_resource()の判定が効かない round()に無効な mode を渡すと ValueError- OPcache の JIT の既定値が変わった(
opcache.jitを明示する) str_getcsv()の区切り文字などの長さの確認が厳しくなった
すぐ更新できないときの応急処置
php.net 公式の一時しのぎ。完全に防げるのは更新だけ。
CVE-2026-109619
session.upload_progress.enabled=0にして、すべてのワーカーを再起動- 設定は php.ini・FPM のプール・サーバーの設定で行う(
ini_set()や.user.iniでは効かない) - PHP 8.5 は
fatal_error_backtraces=0も設定して再起動 - エラーを隠す(
display_errorsや@)だけでは効かない
CVE-2026-109618
memory_limit=-1(FPM のプールか Apache の設定で。ほかの設定で上書きされないようにする)- アップロード不要なら
post_max_size = 8M、必要なら32M(upload_max_filesizeはそれより小さく) - Web サーバーやプロキシで、リクエストの大きさ・項目数・ヘッダー数・入れ子の深さを制限
- メモリの上限はコンテナや cgroup でかける(
RLIMIT_ASやRLIMIT_DATAは使わない)
レンタルサーバーでは、これらを利用者が変えられないことが多い。
移行の手順
- サイトのファイルとデータベースを、まるごとバックアップする
- WordPress なら、本体・プラグイン・テーマを先に新しくする
- テスト用の環境で、新しい PHP で動くか試す
- 本番の PHP を切り替え、トップ・フォーム・管理画面を確かめる
- おかしければ、すぐ元の版に戻す
よくある質問
PHP 8.0 / 8.1 は PHP2Shell の影響を受けますか?
受けます。
公式の修正版は出ていません。
PHP 8.0 / 8.1 のまま使い続けても大丈夫ですか?
おすすめしません。
公式の保守が終わっていて、PHP2Shell の修正版も出ていません。
PHP 8.4 か 8.5 への移行が必要です。
PHP 8.0 / 8.1 から上げると、WordPress は動きますか?
WordPress 本体は、新しい版ほど新しい PHP に対応しています。
問題になるのは古いプラグインやテーマが多いので、テスト環境で確かめてから切り替えてください。
移行を頼むと、費用はどれくらいですか?
サイトの作りやプラグインの数で変わります。
PHPチェッカーでは、サイトを確認してから無料で見積もります。
参考にした情報
- php.net(2026年10月21日のセキュリティ告知)
- php.net:Supported Versions
- php.net:Unsupported Branches
- php.net:付録(移行ガイド)
2026年10月22日時点の公開情報にもとづく。最新は php.net と、利用中のサーバー会社の告知を確認すること。
PHP のバージョンとサーバー会社を選ぶだけで、危険度と今やることが分かる。移行の相談もできる。
無料で診断する


