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
- Remove
"fruitcake/laravel-cors"
from your composer.json- Replace
\Fruitcake\Cors\HandleCors::class,
with\Illuminate\Http\Middleware\HandleCors::class,
inapp/Http/Kernel.php
ヘッダー情報に関するライブラリがLaravel本体に取り込まれたらしいので変更します。
composer remove fruitcake/laravel-cors
vi app/Http/Kernel.php # \Fruitcake\Cors\HandleCors::class, を \Illuminate\Http\Middleware\HandleCors::class の記述に変更
以上になります。
あとはphpunitの実行なり基本機能の確認をして問題がなければ完了になります。
お疲れ様でした。
コメントを残す