Laravel 8 -> 9へバージョンアップした経験をまとめました

Laravel8系のセキュリティサポートが終了している(2023年1月24日まで)のでアップデートした経験をまとめていきます。

記事公開時の最新版としては10系まで公開されていますが、変更点を少しづつ取り込みたいので、まずは9系に上げてから10系まで進めた際の対応方法などをまとめています。

https://laravel.com/docs/9.x/releases#support-policy

フレームワークを使用したプロジェクトでバージョンアップデートする場合には以下の選択肢があると思います。

  • composer require でパッケージをバージョンアップ
  • composer.json内の番号を変更、composer.lockを削除してからcomposer update
  • laravel new や composer create-project で新規プロジェクトを作成してcomposer.jsonの中身や生成ファイルの差分を取り込む

一番上がお手軽で下に行くにつれて手間がかかりますが確実な方法になります。

公式のアップグレードガイドを確認しつつ進めたところ、2番目のcomposer updateで完了することができました。場合によっては laravel newまで必要になるかと思います。

https://laravel.com/docs/9.x/upgrade

一通り確認したところ、自分のLaravelプロジェクトでは以下の対応を行いました

  • PHPを8.0系に
  • composer.json の laravel/framework を ^9.0 バージョンに変更
  • composer.json の nunomaduro/collision を ^6.1 バージョンに変更
  • fruitcake/laravel-corsをcomposer.jsonから削除
    • app/Http/Kernel.php 内の \Fruitcake\Cors\HandleCors::class, を \Illuminate\Http\Middleware\HandleCors::class に変換

9系はメールライブラリの変更も行われたそうなのでメール送信処理の確認も綿密にしていきましょう。

元々の8系のバージョンによったり記述している機能によっては別の対応が必要になります。

PHPを8.0系に

PHPのバージョンを上げます。元々は7.4系でしたが7系もすでにサポート終了しているのでついでです。

エックスサーバーでPHPのバージョンを変更する方法はこちら

https://www.xserver.ne.jp/manual/man_program_php_ver.php

サブドメインなどで変更するにはこちら

composer.jsonの変更

変更する場所が以下になります。

    "require": {
        "php": "^8.0",
        "laravel/framework": "^9.0",
    },
    "require-dev": {
        "nunomaduro/collision": "^6.1",
    },

このまま composer update を実行してしまうと依存関係の解消をしてくれないので、composer.lockを削除してから実行します。

rm composer.lock
composer update

こちらで一旦は完了です。

しかし現在(2023年4月12日)での9系の最新は v9.52.5 で、9.2系からは以下の対応も必要になります。

https://github.com/fruitcake/laravel-cors

  1. Remove "fruitcake/laravel-cors" from your composer.json
  2. Replace \Fruitcake\Cors\HandleCors::class, with \Illuminate\Http\Middleware\HandleCors::class,in app/Http/Kernel.php

ヘッダー情報に関するライブラリがLaravel本体に取り込まれたらしいので変更します。

composer remove fruitcake/laravel-cors
vi app/Http/Kernel.php # \Fruitcake\Cors\HandleCors::class, を \Illuminate\Http\Middleware\HandleCors::class の記述に変更

以上になります。

あとはphpunitの実行なり基本機能の確認をして問題がなければ完了になります。

お疲れ様でした。

投稿者


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA