「まだ動いてるから大丈夫」は危険なサインです。古いPHPが引き起こすセキュリティリスク・パフォーマンス劣化・業務停止リスクを、実案件の事例をもとに正直に解説します。
こんな状況、心当たりありませんか?
「サーバーは動いているし、サイトも表示されているから問題ない」——Web担当者の方からよく聞く言葉です。しかし実際に環境を確認してみると、PHP 7.2や7.4といったすでにサポートが終了したバージョンで動き続けているケースが、中小企業のサイトには非常に多く見受けられます。
「PHPのバージョンが古い」と言われても、ピンとこない方がほとんどでしょう。サイトは見えているし、フォームも動いている。でも、水面下では深刻な問題が進行しているかもしれません。この記事では、古いPHPが引き起こす具体的なリスクを、技術的な背景と実際の事例を交えながら正直にお伝えします。
PHPのバージョン管理、なぜ重要なのか
PHPのサポートサイクルを理解する
PHPには各バージョンに「セキュリティサポート期限」が定められています。期限を過ぎると、新たに発見された脆弱性に対してもパッチが提供されなくなります。これは「既知の弱点を放置したまま運用を続ける」状態と同義です。
赤いバーが示す通り、PHP 7.2はすでにサポート終了から6年以上が経過しています。その間に発見された脆弱性は、いくつも未修正のまま残っています。
「動いている」と「安全」は別の話
よくある誤解が「今日もサイトが動いているから大丈夫」という認識です。しかしセキュリティリスクは、問題が起きるまで表面に出てこないのが本質的な怖さです。攻撃者はサイトオーナーが気づかないうちに侵入し、個人情報を窃取したり、サイトを踏み台にして他サイトへの攻撃を行ったりします。
古いPHPが引き起こす3つの具体的リスク
リスク1:既知の脆弱性を突かれる
PHP 7.4以前には、CVE(共通脆弱性識別子)として公開された深刻な脆弱性が複数存在します。代表的なものとして、**型ジャグリング(Type Juggling)**を悪用した認証バイパスが挙げられます。
// PHP 7.x系で起きやすい型比較の罠
// 以下の比較は緩やかな比較(==)を使うと予期しない結果になる
$token_from_db = "0e123456789"; // DBから取得したトークン
$user_input = "0e987654321"; // ユーザーが入力した値
if ($token_from_db == $user_input) {
// PHP 7.x では true になってしまう(どちらも科学的記数法で 0 と解釈)
// 攻撃者はこれを利用して認証を突破できる
echo "認証成功";
}
// PHP 8.x では厳格な型比較が推奨されており、=== を使えばこの問題は回避できる
if ($token_from_db === $user_input) {
echo "認証成功"; // この場合は false → 安全
}
このような脆弱性は、PHPのバージョンを最新に保つことと、コードレベルでの厳格な記述の両方で対処が必要です。
リスク2:WordPressやLaravelの最新版が使えなくなる
PHPのバージョンが古いと、フレームワークやCMSの最新版への更新も止まります。
| プラットフォーム | 必要なPHP最低バージョン | 古いPHP(7.4)での状況 |
|---|---|---|
| WordPress 6.5以降 | PHP 8.0以上 | インストール不可 |
| Laravel 11.x | PHP 8.2以上 | 動作しない |
| WooCommerce 8.x | PHP 8.0以上 | 機能制限あり |
| Composer 2.x | PHP 7.4以上 | 一部パッケージ非対応 |
WordPressのプラグインが更新できない状態が続くと、そのプラグインに脆弱性が発見された際に対処できなくなります。「プラグインの更新ボタンを押したら壊れた」という問い合わせをいただくことがありますが、多くの場合、PHP・WordPress・プラグインのバージョンの不整合が原因です。
リスク3:処理速度の劣化とサーバーコストの増大
PHP 8.x系はPHP 7.x系と比べて、同じ処理でもJITコンパイラの導入により最大で30〜50%の速度改善が報告されています。古いバージョンを使い続けることは、本来不要なサーバーリソースを消費し続けることを意味します。
実案件で経験した「PHPバージョン放置」の末路
神奈川県内の製造業のクライアントから、「サイトが急に重くなり、問い合わせフォームが動かなくなった」という相談を受けたことがあります。調査してみると、PHP 7.2 + WordPress 5.3という構成で3年以上更新を行っていない状態でした。
より深刻だったのは、サーバーのアクセスログを確認したところ、既知の脆弱性を突いた自動スキャンツールによる不審なアクセスが数百件記録されていたことです。幸い重大な被害には至りませんでしたが、一歩間違えば顧客情報の漏洩やサイト改ざんにつながっていた可能性がありました。
対応としては、PHPを8.2に引き上げ、WordPressとすべてのプラグインを最新版に更新し、WAF(Web Application Firewall)の導入を行いました。その結果、サイトの表示速度が改善されただけでなく、不審なアクセスへの自動ブロック件数も可視化でき、担当者の方に「こんなに攻撃されていたのか」と驚かれました。
PHPバージョンの確認と更新手順
まず現状を把握する
自分のサーバーのPHPバージョンを確認する最も簡単な方法は次の通りです。
<?php
// phpinfo.php という名前でサーバーにアップロードして確認
// ※確認後は必ず削除すること(情報漏洩リスク)
phpinfo();
更新前に必ずやるべきこと
PHPのバージョンアップは、単純に数字を上げるだけでは済みません。コードの互換性確認が必須です。特にPHP 8.0以降では、非推奨だった書き方がエラーになる変更が多く含まれています。
// PHP 8.0で廃止された書き方の例
// NG: 動的プロパティの暗黙的な作成(PHP 8.2でdeprecated)
class User {
// プロパティ宣言なし
}
$user = new User();
$user->name = "田中"; // PHP 8.2 でDeprecationWarning、PHP 9.0でエラー予定
// OK: プロパティを明示的に宣言する
class User {
public string $name = '';
}
$user = new User();
$user->name = "田中"; // 安全
Laravelプロジェクトであれば、rector/rectorというツールを使うことで、古い記法を自動的に検出・修正できます。
# Rectorのインストール(開発環境のみ)
composer require rector/rector --dev
# 設定ファイルを生成
./vendor/bin/rector init
# ドライラン(実際には変更しない)で影響範囲を確認
./vendor/bin/rector process --dry-run
よくある失敗パターンと対処法
失敗1:本番環境で直接バージョンを上げる
最も多いミスが、ステージング環境での検証をスキップして本番環境に直接適用するケースです。ある案件では、PHPを7.4から8.1に上げた直後にECサイトの決済処理が動かなくなり、土日の売上に影響が出たことがありました。決済プラグインが8.1に未対応だったことが原因でした。
対処法: 本番と同じ構成のステージング環境を用意し、最低1週間は並行稼働させて動作確認を行うこと。
失敗2:PHPだけ上げてプラグインは放置
PHPのバージョンを上げたのに、WordPressのプラグインが対応していないケースも頻繁に発生します。PHPのバージョンアップは「パッケージ全体の更新作業」とセットで考えなければなりません。
対処法: 更新作業は「PHPバージョン → WordPressコア → プラグイン → テーマ」の順番で段階的に実施する。
失敗3:バックアップを取らずに作業する
言うまでもないように見えて、意外と省略されがちなのがバックアップです。「どうせすぐ終わる作業だから」という油断が、データ消失につながります。
対処法: データベースとファイルのフルバックアップを作業前に必ず取得し、作業後72時間はバックアップを保持する。
開発・運用でお困りなら
システム開発
設計から運用まで、堅牢なシステムを構築します
※ 通常1営業日以内にご返信します
まとめ:今日から始めるPHP健全化のステップ
古いPHPを放置することは、「鍵のかかっていないドア」を長期間放置するのと同じリスクを抱えています。「まだ動いているから」という安心感は、残念ながら根拠のないものです。
まず今週中にやるべきことは、自社サイトのPHPバージョンの確認です。PHP 8.1未満であれば、対応計画を立てることを強くお勧めします。
「自分でやってみたが、どのバージョンに上げればいいか判断できない」「更新後に何かが壊れて元に戻したい」といったケースは、私たちが実際によくご相談いただく内容です。PHPのバージョンアップは技術的な判断が多く、中途半端に行うと本番環境の障害につながりかねません。
Fivenine Designでは、現在のサーバー環境の診断から、バージョンアップ計画の策定・実施、事後の動作確認まで一貫してサポートしています。「まず現状を把握したい」という段階からでもお気軽にご相談ください。