Laravel5.8→10.Xまでのバージョンアップ方法まとめ

こんにちは。堀部です。
 
Laravelのバージョンアップをする機会があったので、備忘のために手順をまとめたいと思います。2023年11月時点の最新バージョンであるLaravel10までの方法をまとめました。何かの参考になれば幸いです。

Laravel5.8 → 6.Xへアップグレード

公式サイトにも アップグレードガイドがありますが、基本的にはcomposer.jsonを書き換えて対応します。
 
対応前

    "require": {
        "php": "^7.1.3",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "5.8.*",
        "laravel/tinker": "^1.0"
    },

対応後
    "require": {
        "php": "^7.1.3",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.0",
        "laravel/tinker": "^1.0"
    },

「composer update」を実行した後、「php artisan -V」でバージョン確認します。

Laravel6.X → 7.Xへアップグレード

composer.jsonを以下の通り書き換えるのと、Symfony5が変更となっているので対応するようにプログラムを修正します。公式サイトのアップグレードガイドは こちら
 
対応前

    "require": {
        "php": "^7.1.3",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.0",
        "laravel/tinker": "^1.0"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^3.0",
        "oscarafdev/migrations-generator": "^2.0",
        "phpunit/phpunit": "^7.5"
    },


対応後
    "require": {
        "php": "^7.1.3",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^7.0",
        "laravel/tinker": "^2.0",
        "laravel/ui": "2.0"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^4.1",
        "oscarafdev/migrations-generator": "^2.0",
        "phpunit/phpunit": "^8.5",
        "facade/ignition": "^2.0"
    },

Symfony5のアップグレードに伴う修正

app/Exceptions/Handler.phpの「Exception」を「Throwable」に変更します。

// use Exception;
use Throwable;

    // public function report(Exception $exception)
    public function report(Throwable $exception)

    // public function render($request, Exception $exception)
    public function render($request, Throwable $exception)

config/session.phpを変更します。
    // 'secure' => env('SESSION_SECURE_COOKIE', false),
    'secure' => env('SESSION_SECURE_COOKIE', null),

「composer update」を実行した後、「php artisan -V」でバージョン確認します。

Laravel7.X → 8.Xへアップグレード

composer.jsonのみの変更で対応可能です。公式サイトのアップグレードガイドは こちら
 
対応前

    "require": {
        "php": "^7.1.3",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^7.0",
        "laravel/tinker": "^2.0",
        "laravel/ui": "2.0"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^4.1",
        "oscarafdev/migrations-generator": "^2.0",
        "phpunit/phpunit": "^8.5",
        "facade/ignition": "^2.0"
    },

対応後


    "require": {
        "php": "^7.1.3",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^8.0",
        "laravel/tinker": "^2.0",
        "laravel/ui": "^3.0"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^5.0",
        "oscarafdev/migrations-generator": "^2.0",
        "phpunit/phpunit": "^9.0",
        "facade/ignition": "^2.0"
    },

「composer update」を実行した後、「php artisan -V」でバージョン確認します。

Laravel8.X → 9.Xへアップグレード

composer.json を以下の通り書き換えます。Laravel9.XからはPHP8.0.2以上が必要なため、PHPのバージョンも上げています。公式サイトのアップグレードガイドは こちら
 
対応前

    "require": {
        "php": "^7.1.3",
        "laravel/framework": "^8.0",
        "laravel/tinker": "^2.0",
        "laravel/ui": "^3.0"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^5.0",
        "oscarafdev/migrations-generator": "^2.0",
        "phpunit/phpunit": "^9.0",
        "facade/ignition": "^2.0"
    },


対応後


    "require": {
        "php": "^8.1",
        "laravel/framework": "^9.0",
        "laravel/tinker": "^2.0",
        "laravel/ui": "^3.0"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^6.1",
        "phpunit/phpunit": "^9.0",
        "spatie/laravel-ignition": "^1.0"
    },

fideloper/proxyの更新

fideloper/proxyがある場合、Laravel9では使用できないため削除します。

composer remove fideloper/proxy

app/Http/Middleware/TrustProxies.phpを以下の通り書き換えます。
// use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Middleware\TrustProxies as Middleware;

    // protected $headers = Request::HEADER_X_FORWARDED_ALL;
    protected $headers =
                Request::HEADER_X_FORWARDED_FOR |
                Request::HEADER_X_FORWARDED_HOST |
                Request::HEADER_X_FORWARDED_PORT |
                Request::HEADER_X_FORWARDED_PROTO |
                Request::HEADER_X_FORWARDED_AWS_ELB;

「composer update」を実行した後、「php artisan -V」でバージョン確認します。

Laravel9.X → 10.Xへアップグレード

Laravel10からComposer2.2.0以上が必須となっているため、composerのバージョンをあげます。公式サイトのアップグレードガイドは こちら

composer selfupdate --2

composer.json を以下の通り書き換えます。
 
対応前
    "require": {
        "php": "^8.1",
        "laravel/framework": "^9.0",
        "laravel/tinker": "^2.0",
        "laravel/ui": "^3.0"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^6.1",
        "phpunit/phpunit": "^9.0",
        "spatie/laravel-ignition": "^1.0"
    },


対応後


require: {
    "php": "^8.1",
    "laravel/framework": "^10.0",
    "laravel/tinker": "^2.0",
    "laravel/ui": "^4.2"
},
require-dev: {
    "beyondcode/laravel-dump-server": "^1.0",
    "filp/whoops": "^2.0",
    "fzaninotto/faker": "^1.4",
    "mockery/mockery": "^1.0",
    "nunomaduro/collision": "^7.0",
    "phpunit/phpunit": "^10.0",
    "spatie/laravel-ignition": "^2.0"
},

「composer update」を実行した後、「php artisan -V」でバージョン確認します。

まとめ

いかがでしょうか。
 
Laravelのバージョンアップはメジャーバージョンを飛び越えてできないため、1つずつ上げていく必要があります。公式サイトにもアップグレードガイドがあるので参考にしてみてください。
 
 
 
 
《関連記事》

Windows環境にLaravel×Dockerで環境構築
技術
2022.6.24(Fri)

手順をすべて紹介。Windows環境にLaravel×Dockerで環境構築する方法

#PHP

Windows環境にPostgreSQL×Dockerで環境構築
技術
2023.2.21(Tue)

手順をすべて紹介。Windows環境にPostgreSQL×Dockerで環境構築する方法

#PHP#SQL

Laravelでsession管理
技術
2023.10.17(Tue)

Laravelでsession管理! sessionデータの色々な操作方法を徹底解説

#PHP

記事をシェア
MOST VIEWED ARTICLES