本文へスキップ
  1. エゴサる
  2. 記事一覧
  3. その他

PHP バージョンアップの実務手順 ― 確認・切替・バージョン非表示まで

公開 更新
PHP バージョンアップの実務手順 ― 確認・切替・バージョン非表示まで

2026 年に CVSS 9.8 の重大脆弱性が PHP に発見されました。サーバーが PHP バージョンを開示している日本のサイトのうち、59.5% が修正版へアップデートされていないバージョンを表示しています(中澤祐樹 セキュリティ露出統計調査 2026、データ収集: サイトスカウター)。この記事では、現在動いているサーバーの PHP バージョンを確認する方法から、レンタルサーバーでのバージョン切替、切替後の動作確認、最後にバージョン情報を外部に出さない設定まで、順を追って説明します。

この記事は 3 か所に掲載しています: 筆者ブログ nkzw.jp 版(図版付き)/ サイトスカウター版 / エゴサる版(本ページ)。

まず自分の PHP バージョンを確認する

図解: まず自分の PHP バージョンを確認する
図解: まず自分の PHP バージョンを確認する

対策の第一歩は「今どのバージョンが動いているか」を把握することです。確認方法は複数ありますが、いずれか 1 つで十分です。

レンタルサーバーの管理画面から確認する

図解: レンタルサーバーの管理画面から確認する
図解: レンタルサーバーの管理画面から確認する

ほとんどのレンタルサーバーは、コントロールパネル上に「PHP 設定」または「PHP バージョン切替」に相当するメニューを用意しています。サーバー管理画面にログインし、ドメインやサイトの設定欄を開くと、現在適用中の PHP バージョンが表示されます。メニュー名・表示箇所は各社で異なるため、お使いのサービスの最新マニュアルを確認してください。

WordPress の「サイトヘルス」から確認する

図解: WordPress の「サイトヘルス」から確認する
図解: WordPress の「サイトヘルス」から確認する

WordPress を使っている場合、管理画面の 「ツール」→「サイトヘルス」→「情報」 タブを開くと、「サーバー」セクションに現在の PHP バージョンが表示されます。プラグインを追加せず確認できるため、WordPress サイトの運営者には最も手軽な方法です。

phpinfo() で確認する(公開したままにしない)

図解: phpinfo() で確認する(公開したままにしない)
図解: phpinfo() で確認する(公開したままにしない)

<?php phpinfo(); ?> だけを記述した PHP ファイルをサーバーにアップロードしてブラウザでアクセスすると、PHP バージョンを含む詳細な環境情報が確認できます。

確認後は必ずファイルを削除してください。 phpinfo() の出力にはバージョン番号・設定値・インストール済みモジュールなど攻撃者が悪用できる情報が含まれます。Web で公開したままにすると、サーバーへの侵入経路を自ら示すことになります。確認専用の一時ファイルとして使い、確認後すぐ削除するのが原則です。

sitescouter.net の /server/ で「外から見える版」を確認する

図解: sitescouter.net の /server/ で「外から見える版」を確認する
図解: sitescouter.net の /server/ で「外から見える版」を確認する

上記の方法はサーバー側から見た情報ですが、外部からアクセスしたときにブラウザやサーバーが実際に何を返しているかを確認するには、サイトスカウター サーバー情報調査(/server/) が便利です。URL を入力すると、Server ヘッダや X-Powered-By ヘッダに PHP バージョンが出力されているかどうかを確認できます。「PHP 8.1.x と表示されていた」という状態が外部から見えているかどうかを、第三者視点で把握するのに使ってください。

PHP のサポート期限と 2026 年の重大脆弱性

図解: PHP のサポート期限と 2026 年の重大脆弱性
図解: PHP のサポート期限と 2026 年の重大脆弱性

サポート期限の一覧

図解: サポート期限の一覧
図解: サポート期限の一覧

php.net が公表しているサポート状況(2026 年 10 月 27 日確認)を以下にまとめます。期限は延長や変更があり得るので、実施前に php.net/supported-versions.php で最新の期限を再確認してください。

バージョン 状態 Active Support 終了 セキュリティ修正終了
8.5 サポート中(最新) 2027-12-31 2029-12-31
8.4 サポート中 2026-12-31 2028-12-31
8.3 セキュリティ修正のみ 2025-12-31 2027-12-31
8.2 セキュリティ修正のみ 2024-12-31 2026-12-31
8.1 以下 サポート終了(EOL) — 終了済み
7.x / 5.x サポート終了(EOL) — 終了済み

8.2 は 2026 年末でセキュリティ修正も終了します。 現在 8.2 を使用している場合、今後 1 年以内に 8.3 以上への移行が必要です。8.1 以下はすでにパッチが提供されないため、今すぐ対処が必要です。

一方で、PHP バージョンを開示している日本のサイトのうち 52.3% がサポート終了版(EOL)を表示しています(中澤祐樹 セキュリティ露出統計調査 2026、データ収集: サイトスカウター)。EOL のバージョンに脆弱性が発見されても、修正パッチは配布されません。

PHP サポート終了率 リージョン別(PHP バージョン開示サイト比)
PHP サポート終了率 リージョン別(PHP バージョン開示サイト比)
日本の PHP マイナーバージョン別ホスト数(バージョン開示ホスト)
日本の PHP マイナーバージョン別ホスト数(バージョン開示ホスト)

2026 年の重大脆弱性と修正版番号

図解: 2026 年の重大脆弱性と修正版番号
図解: 2026 年の重大脆弱性と修正版番号

2026 年に PHP に関して CVSS スコア 9.8(Critical)の脆弱性が公開されました。

CVE CVSS 概要 修正が含まれる最小バージョン
CVE-2026-109618 9.8 Use-After-Free。OOM(メモリ不足)時の longjmp に起因し、リクエスト間でメモリが混入する 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12
CVE-2026-109619 9.8 同上の関連脆弱性。権限を持つリクエストのメモリが別ユーザーのリクエストに流れ込む可能性 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12

この脆弱性が悪用されると、他のユーザーのセッション情報やデータが混入し、不正な権限奪取・情報漏えい、最悪の場合はサーバーへの Web シェル設置につながる可能性があります。現在お使いのバージョンが 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 未満であれば、早急なアップデートが必要です。

2026 年 PHP 重大脆弱性 未修正版表示率
2026 年 PHP 重大脆弱性 未修正版表示率

バージョンアップの手順

図解: バージョンアップの手順
図解: バージョンアップの手順

ステップ 1:切替前のバックアップを取る

図解: ステップ 1:切替前のバックアップを取る
図解: ステップ 1:切替前のバックアップを取る

バージョンアップによって PHP の動作が変わり、サイトが表示されなくなるケースがあります。切替前に必ず以下のバックアップを取ってください。

  • データベースのバックアップ:MySQL / MariaDB のダンプ(phpMyAdmin の「エクスポート」、またはサーバー管理画面のバックアップ機能を使います)
  • ファイルのバックアップ:WordPress であれば wp-content/ 以下(テーマ・プラグイン・アップロードファイル)と wp-config.php

ステップ 2:WordPress・テーマ・プラグインの互換性を確認する

図解: ステップ 2:WordPress・テーマ・プラグインの互換性を確認する
図解: ステップ 2:WordPress・テーマ・プラグインの互換性を確認する

PHP のメジャーバージョン(7.x → 8.x)を上げる場合は、WordPress 本体・使用テーマ・インストール済みプラグインが対象の PHP バージョンに対応しているかを事前に確認します。

  • WordPress 本体は管理画面の 「ダッシュボード」→「更新」 から最新版に更新しておきます
  • プラグインはそれぞれの WordPress.org の詳細ページ(「Tested up to」の欄)や開発元のサポート情報で互換性を確認します
  • 古くてメンテナンスされていないプラグインは、代替プラグインへの移行を検討してください

ステップ 3:ステージング環境で動作確認する(推奨)

図解: ステップ 3:ステージング環境で動作確認する(推奨)
図解: ステップ 3:ステージング環境で動作確認する(推奨)

本番サイトで直接切り替える前に、ステージング環境(テスト用のコピーサイト)で PHP バージョンを変えて動作確認することを強くお勧めします。主要なレンタルサーバーはステージング機能やサブドメインを提供しているので、それを活用してください。

ステージングが用意できない場合は、アクセスの少ない時間帯(深夜など)に切替を行い、直後に主要ページを目視確認するという方法が現実的です。

ステップ 4:管理画面で PHP バージョンを切り替える

図解: ステップ 4:管理画面で PHP バージョンを切り替える
図解: ステップ 4:管理画面で PHP バージョンを切り替える

国内の主要レンタルサーバー(さくらのレンタルサーバ・エックスサーバー・ロリポップ・ConoHa WING・mixhost など)は、管理画面から PHP バージョンを切り替えるメニューを提供しています。一般的な流れは次のとおりです。

  1. サーバー管理画面にログインする
  2. ドメインまたはサイトの設定画面を開き、「PHP 設定」「PHP バージョン切替」「言語バージョン設定」に相当するメニューを探す
  3. 一覧から 8.3 または 8.4(各社が提供する最新の安定版)を選択し、保存・適用する
  4. 設定が反映されるまで数分かかる場合があります

メニュー名・操作手順は各社で異なります。 必ずお使いのサービスの公式マニュアルを参照してください。提供バージョンの一覧も各社のサポートページで確認できます。

ステップ 5:切替後の動作確認とエラーログの確認

図解: ステップ 5:切替後の動作確認とエラーログの確認
図解: ステップ 5:切替後の動作確認とエラーログの確認

バージョンを切り替えたら、以下を確認します。

  • サイトのトップページ・主要ページが正常に表示されるかをブラウザで確認する
  • WordPress の管理画面にログインできるかを確認する
  • PHP のエラーログを確認する。サーバー管理画面の「ログ」機能、または error_log で指定したパスにログが出ていないか確認します。PHP Fatal error や PHP Deprecated が出ている場合は、該当プラグインやテーマの対処が必要です
  • 問題が出た場合は、速やかに元のバージョンに戻し(多くの管理画面は即座に切り替えられます)、原因を調べてから再挑戦します

バージョン情報を非表示にする(更新を終えてから行う)

図解: バージョン情報を非表示にする(更新を終えてから行う)
図解: バージョン情報を非表示にする(更新を終えてから行う)

PHP や Web サーバーがバージョン番号を外部に通知しないようにする設定があります。これを「バージョン非表示(隠蔽)」といいますが、非表示にするだけでは脆弱性がなくなるわけではありません。まずバージョンアップを終わらせてから、副次的な対策として行ってください。

順序が逆になると、「古いバージョンのまま番号だけ隠した」状態になり、発見されにくいだけで実際のリスクは変わりません。

PHP のバージョン表示を消す(expose_php)

図解: PHP のバージョン表示を消す(expose_php)
図解: PHP のバージョン表示を消す(expose_php)

php.ini または .htaccess に次の設定を追加します。

; php.ini に追記
expose_php = Off

レンタルサーバーで php.ini を直接編集できない場合は、php.ini の代わりに .user.ini(多くのレンタルサーバーで有効)に同じ設定を書きます。変更後はサーバーを再読み込み(または設定が反映されるまで待機)してから、サイトスカウター /server/ で X-Powered-By ヘッダから PHP バージョンが消えていることを確認してください。

Apache の Server ヘッダを最小化する

図解: Apache の Server ヘッダを最小化する
図解: Apache の Server ヘッダを最小化する

Apache が管理できる環境(VPS・専用サーバーなど)では、httpd.conf または apache2.conf に以下を設定します。

ServerTokens Prod
ServerSignature Off

ServerTokens Prod は Server: Apache のみを返し、バージョン番号を省略します。ServerSignature Off はエラーページ下部のサーバー情報を非表示にします。

nginx の Server ヘッダを最小化する

図解: nginx の Server ヘッダを最小化する
図解: nginx の Server ヘッダを最小化する

nginx では、nginx.conf の http ブロックに以下を追加します。

server_tokens off;

これで Server: nginx のみを返し、バージョン番号が省略されます。

設定変更後の最終確認

図解: 設定変更後の最終確認
図解: 設定変更後の最終確認

バージョンアップとバージョン非表示の設定を終えたら、サイトスカウター サーバー情報調査(/server/) でサイトの URL を調べてみてください。X-Powered-By や Server ヘッダにバージョン番号が出なくなっていれば、外部からバージョン情報が見えない状態になっています。

まとめ:作業チェックリスト

図解: まとめ:作業チェックリスト
図解: まとめ:作業チェックリスト
  • [ ] 現在の PHP バージョンを管理画面・サイトヘルス・/server/ で確認した
  • [ ] 8.1 以下を使っていた場合は EOL(サポート終了)であることを認識した
  • [ ] 8.2 を使っている場合は 2026-12-31 の期限を把握した
  • [ ] バックアップ(DB +ファイル)を取った
  • [ ] WordPress・テーマ・プラグインの互換性を確認した
  • [ ] PHP を 8.3 以上(できれば 8.4 または 8.5。各社が提供する最新の安定版)に切り替えた
  • [ ] 現在のバージョンが CVE-2026-109618 / CVE-2026-109619 の修正版(8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 以上)であることを確認した
  • [ ] 切替後にサイトが正常動作し、エラーログに問題がないことを確認した
  • [ ] expose_php = Off / ServerTokens Prod / server_tokens off を設定した(更新後)
  • [ ] /server/ で外から見えるバージョン情報が消えていることを確認した

関連記事

図解: 関連記事
図解: 関連記事

サポート期限の情報は php.net/supported-versions.php をもとにしています。公開前に最新の期限を必ず再確認してください。

関連記事

筆者・連絡先

中澤祐樹(nkzw.jp)

「PHP バージョンアップ」の最新サジェストをエゴサるで調べる

無料で調べる

関連記事