PHP7からPHP8への移行手順|互換性の注意点と費用目安
PHP7とは
PHP7は2015年12月にリリースされたPHPのメジャーバージョンです。PHP5と比較して処理速度が2〜3倍に向上し、スカラー型宣言、戻り値型宣言、null合体演算子、宇宙船演算子などのモダンな機能が追加されました。Laravel、Symfony、CakePHP 3などのフレームワークがPHP7を推奨環境とし、多くのWebシステムがPHP7で構築されています。
しかし、PHP 7.4のセキュリティサポートは2022年11月28日に終了しています。PHP 7.x系の全バージョンが既にEOL(End of Life)となっており、セキュリティパッチの提供は一切行われていません。2026年現在、PHP8.2/8.3/8.4が安定版として提供されており、PHP7からの移行は急務です。
PHP7を使い続けるリスク
1. セキュリティリスク
PHP7のEOL後も脆弱性は発見されています。特にPHP 7.xに影響するCVE-2024-4577(CGI引数インジェクション)は、Windows環境でのリモートコード実行を可能にする重大な脆弱性です。PHP7ユーザーにはパッチが提供されないため、WAF(Web Application Firewall)等で緩和するしか対策がありません。また、PHP7で動作するフレームワークやライブラリ(Laravel 8以前、CakePHP 3等)もセキュリティアップデートが終了しています。
2. 保守コストの増大
Composer経由のパッケージがPHP8を最低要件とするケースが急増しています。Packagistの主要パッケージの約70%がPHP8.1以上を要件としており(2025年時点)、新しいライブラリや最新バージョンへのアップデートが不可能です。セキュリティ修正を含むパッケージアップデートができないことで、間接的なリスクも増大しています。
3. 事業継続リスク
主要なPaaSプロバイダー(Heroku、Platform.sh等)やレンタルサーバーがPHP7のサポートを順次終了しています。サーバー移転やインフラ更新時にPHP7が利用不可となり、強制的な移行を迫られるケースが増えています。計画的な移行と緊急的な移行では、コストと品質に大きな差が出ます。
PHP7からPHP8への移行手順
STEP 1: 現状調査・影響範囲の把握
現在のPHPバージョン(7.2/7.3/7.4)を確認し、composer.jsonの依存パッケージを棚卸しします。PHPCompatibility(PHP_CodeSnifferのルールセット)を使って、PHP8との互換性問題を自動スキャンします。phpcs --standard=PHPCompatibility --runtime-set testVersion 8.2 ./src で問題箇所を一括検出できます。
STEP 2: 移行計画の策定
PHP8の破壊的変更で影響を受ける箇所を特定し、修正計画を立てます。主な破壊的変更:
・名前付き引数: 関数パラメータ名の変更が破壊的変更になりうる
・Union型: 既存のPHPDocとの整合性確認が必要
・match式: switch文との厳密比較の違いに注意
・Null safe演算子: null処理の挙動変更を確認
・str_contains/str_starts_with/str_ends_with: strpos()からの置換推奨
フレームワークのアップグレード(Laravel 8→10/11、CakePHP 3→5等)も同時に計画します。
STEP 3: テスト環境での検証
Docker等でPHP8.2/8.3環境を構築し、アプリケーションの動作を検証します。Rector(PHPリファクタリングツール)を活用すると、PHP7→PHP8の互換性修正を自動化できます。rector process ./src --set php82で大部分のコード修正が自動で行われます。PHPUnitのテストスイートを実行し、全テストがパスすることを確認します。
STEP 4: 段階的移行の実施
まずステージング環境でPHP8に切り替え、十分な検証期間を設けます。php.iniの設定変更(error_reporting、display_errors等)も見直します。大規模サイトの場合は、ロードバランサーで一部のトラフィックのみPHP8環境に振り分けるカナリアリリースが有効です。
STEP 5: 本番切替・運用開始
本番環境のPHPバージョンを切り替えます。OPcacheの設定最適化、JIT(Just-In-Time)コンパイラの有効化によりパフォーマンスが10〜30%向上することが期待できます。切替直後はエラーログの監視を強化し、PHP8のDeprecation通知にも対応します。今後のPHPバージョンアップに備え、CI/CDパイプラインに互換性テストを組み込みましょう。
よくある質問
Q: PHP7→PHP8の移行にかかる期間は?
A: 小規模サイト(WordPress等)で1〜2週間、中規模Webアプリで1〜3ヶ月、大規模システム(独自フレームワーク等)で3〜6ヶ月が目安です。Rectorによる自動修正を活用すれば、手作業を大幅に削減できます。
Q: PHP7→PHP8の移行費用は?
A: 小規模サイトで20〜80万円、中規模Webアプリで100〜400万円、大規模システムで500〜1,500万円が相場です。フレームワークのメジャーバージョンアップ(Laravel 8→11等)を含む場合は追加費用が発生します。
Q: PHP7.4からPHP8.2に直接上げられる?
A: 技術的には可能ですが、PHP8.0→8.1→8.2の各バージョンの破壊的変更を全て対応する必要があります。段階的にPHP8.0→8.2と上げるか、一気にPHP8.2を目標にしてRectorで自動修正する方法が効率的です。
Q: Laravelのバージョンアップも必要?
A: はい。Laravel 8以前はPHP8.2をサポートしていません。Laravel 10(PHP8.1以上)またはLaravel 11(PHP8.2以上)へのアップグレードが必要です。Laravel Shiftという自動アップグレードサービスも利用できます。
まずはAI Dockで無料診断
RadineerのAI Dock(AI技術負債診断)なら、PHP7システムのリスクを30分で無料診断。互換性問題の影響範囲・セキュリティリスク・最適な移行パスをAIが自動分析します。
「PHP8への移行が必要なのは分かっているが着手できていない」「フレームワークのアップグレードも含めて相談したい」という方は、まずAI Dockで現状を可視化しましょう。
関連サービス: システム開発・リニューアル
