1
/
5

PHP 7.4環境のLaravel 8から、PHP 8.2環境のLaravel 11へのアップグレード

PHP 7.4環境のLaravel 8から、PHP 8.2環境のLaravel 11へのアップグレード手順

Laravelを旧バージョンから新バージョンにアップグレードすることにより、アプリケーションのパフォーマンス向上やセキュリティ強化、さらには新機能の活用など、多くの利点を享受できます。

本記事では、PHP 7.4環境で稼働しているLaravel 8から、PHP 8.2環境のLaravel 11へのアップグレード手順について、順を追ってご説明いたします。

アップグレードにより得られる主なメリット

  • パフォーマンスの向上
    PHP 8.2では、JIT(Just-In-Time)コンパイラの導入により、PHPコードの実行速度が大幅に改善されています。
  • セキュリティの強化
    新バージョンのPHPおよびLaravelには、セキュリティパッチや脆弱性対策のための機能が多数追加されています。
  • 新機能の導入
    Laravel 11およびPHP 8.2では、コードの保守性や効率性を向上させる機能が豊富に取り入れられています。
  • ITコミュニティからのサポート
    最新バージョンを使用することで、情報の入手が容易になり、コミュニティによる支援も受けやすくなります。

① システム要件の確認

アップグレードを実施する前に、以下の点をご確認ください。

  • Laravelバージョン:現在のバージョンが8.xであること(確認コマンド:php artisan --version
  • PHPバージョン:7.4系であること(確認コマンド:php -v
  • サードパーティ製ライブラリ:一部のパッケージがPHP 8.2と互換性がない可能性があります。composer.jsonに記載された各ライブラリのドキュメントをご確認ください。

現在の開発環境:

  • PHP:7.4.x
  • Laravel:8.x
  • Composer:最新版
  • 開発機:MacBook M1
  • 環境構築:Homebrew+Laravel Valet を使用し、PHPを管理

 ②PHP 8.2のインストール

  以下のコマンドを実行して、PHP 8.2をインストールしてください。

brew tap shivammathur/php
brew install php@8.2
valet use php@8.2

Laravelコアのアップデート手順

  1. composer.jsonの内容を以下のように変更します。
json

"require": {
"php": "^8.2",
"laravel/framework": "^11.0"
}"require": {
"php": "^8.2",
"laravel/framework": "^11.0"
}
  1. 以下のファイルとフォルダを削除します。
bash

rm -rf vendor composer.lock
  1. 依存パッケージを再インストールします。
bash

composer update

※ 互換性のないパッケージがある場合は、Composerがエラーを出力します。その際は、対象パッケージの最新版を探すか、代替のパッケージの利用をご検討ください。

ライブラリの互換性対応例

以下のパッケージで互換性の問題が発生しました:

  • bensampo/laravel-enum バージョン 3.3
  • spatie/laravel-medialibrary バージョン 7.0
  • overtrue/laravel-follow

対応として、以下のようにcomposer.jsonを修正しました:

json

"bensampo/laravel-enum": "^4.2.0",
"overtrue/laravel-follow": "^5.0",
"spatie/laravel-medialibrary": "^11.0""bensampo/laravel-enum": "^4.2.0",
"overtrue/laravel-follow": "^5.0",
"spatie/laravel-medialibrary": "^11.0"

その後、再度以下のコマンドを実行します。

bash

composer update

Rectorによるコードの互換性チェックと修正

まず、Rectorを開発環境に導入します。

bash

composer require rector/rector --dev
composer require rector/rector --dev

次に、以下のコマンドで互換性のないコードを確認します(この段階では変更は加えません)。

bash

php vendor/bin/rector process --dry-run

問題がなければ、以下のコマンドで実際のコード修正を適用します。

bash

php vendor/bin/rector process

構成ファイルおよびディレクトリ構成の更新

Laravel 11では、プロジェクトの構成にいくつか変更が加えられています。

app/Console/Kernel.php の変更点:

  • scheduleTimezone() メソッドはLaravel 11で削除されました。使用している場合は削除してください。
  • schedule() メソッドでは、use Illuminate\Console\Scheduling\Schedule; の記述は不要です。
  • カスタムスケジュールロジックを記述している場合は、Laravel 11に対応するよう調整が必要です。

変更前の例:

php

use Illuminate\Console\Scheduling\Schedule;

protected function schedule(Schedule $schedule)
{
$schedule->command('your:command')->daily();
}

protected function scheduleTimezone()
{
return 'UTC';
}
use Illuminate\Console\Scheduling\Schedule;

protected function schedule(Schedule $schedule)
{
$schedule->command('your:command')->daily();
}

protected function scheduleTimezone()
{
return 'UTC';
}

変更後の例:

php

protected function schedule($schedule)
{
$schedule->command('your:command')->daily();protected function schedule($schedule)
{
$schedule->command('your:command')->daily();

config/app.php の確認

Laravel 11のデフォルト設定と比較し、独自の変更点や不足している設定がないか確認してください。

ミドルウェアとサービスプロバイダの確認

  • app/Http/Kernel.php
  • app/Providers/ 配下の各Service Provider

一部のミドルウェアやプロバイダは非推奨または未対応の可能性があるため、再確認をおすすめします。

ルート構成の見直し

Laravel 11では、routes/api.php はデフォルトで使用されなくなっています。APIルートは routes/web.php へ移動するなど、プロジェクトに合った構成に整理してください。

マイグレーションとデータベース更新

データベースに変更がある場合、以下のコマンドでマイグレーションを適用してください。

bash

php artisan migrate

アプリケーションの動作確認

アップグレードが完了したら、アプリケーションが正常に動作するか確認します。

bash

php artisan serve
php artisan serve

エラーが発生した場合は、storage/logs ディレクトリ内のログファイルをご確認ください。

注意事項

ステップ⑤および⑥の作業を省略しても、アプリケーション自体は動作する場合があります。しかし、以下の理由から実施を強く推奨いたします:

  • タイムゾーンなどの設定を適切に行うため
  • Laravel 11の標準構成に従い、保守性を向上させるため
  • 新機能を最大限に活用するため
  • 将来的なアップグレード(Laravel 12、13など)をスムーズに行うため
  • 潜在的な不具合の予防のため

まとめ

Laravel 8からLaravel 11へのアップグレードは、作業量がある程度発生しますが、パフォーマンスやセキュリティ、新機能といった面で多くの恩恵があります。手順ごとに変更点を丁寧に確認し、必ず十分なテストを行ったうえで本番環境に適用してください。

不明点がある場合は、Laravel公式ドキュメントの参照をおすすめします。

Invitation from 株式会社コムデ
If this story triggered your interest, have a chat with the team?
株式会社コムデ's job postings
6 Likes
6 Likes

Weekly ranking

Show other rankings
Like 株式会社コムデ ベトナム拠点's Story
Let 株式会社コムデ ベトナム拠点's company know you're interested in their content