Laravelプロジェクトのバージョンアップのコツ

アイキャッチ画像

どういったタイミングでバージョンアップするの?

フレームワークのバージョンアップのタイミングは様々です。

  • phpのサポートが切れた
  • Laravelのサポートが切れた
  • サーバOSのリプレースによりphpのバージョンが上がった

たまにサーバOSなどが要因で古いバージョンのまま運用される場合もありますが、OSのディストリビューション自体がphpの旧バージョンのセキュリティ対応をしてくれる場合を除き、基本的にはサポートが切れる前のバージョンアップは必須です。

もちろんフレームワーク自体のセキュリティホールがあればそれは残ったままなので早急にバージョンアップが必要になります。

バージョンアップ時にチェックすべきこと

チェックする内容は以下となります。

  • 対応するphpのバージョン
  • phpをバージョンアップすることによって非推奨となった関数はないか?
  • Laravelをバージョンアップすることによって非推奨となったメソッドや記述方法はないか?
  • これまで利用していたライブラリはどのバージョンにアップすべきか?

非推奨となった関数は適宜grepして推奨される同等の関数に置き換えていきます。

Laravel自体のメソッドについても適切なものに置き換えを行い、アプリケーション自体の設定方法が変わっている場合はそれも新しいバージョンにあわせます。

例えばLaravel11以降はミドルウェアや例外処理、プロバイダ設定を app/Http/Kernel.php ではなく bootstrap/app.php に記述するようになっています。

そしてチェック内容の4番目、ライブラリをどのバージョンにアップすべきかを調べる必要があります。

依存関係のチェックはどうやって調べるのか

Laravel本体とライブラリ、またはライブラリ同士の依存関係を調べるには次のサービスを利用します。

Packagist

https://packagist.org

例えばLaravel本体の最新バージョン(執筆時点でv13.34.0)を見てみましょう

php8.3以上であることが確認できます。

また開発環境で使用するfakerは 1.24以上が必要なことも分かります。

Laravel本体と同様にcomposer.jsonに記載されている各ライブラリを全てこのサービスで検索していきましょう。

例えば古いシステムでenumを使用するためのライブラリを使用していたとします。

一応php8.0以上対応とはなっていますが明らかに更新がとまっていますね。

そもそもphp8.1以降はphp自体にenumが実装されたのでこのライブラリは不要になります。

もし依存関係があればLaravel本体のバージョンにあったバージョンのライブラリを指定し、不要なものは削除してください。

また、明らかに更新が止まっているものはセキュリティ上の懸念があるため、代替のライブラリを探しましょう。

別の例としてLaravel向けに作られたPDF出力のライブラリを見てみましょう。

左のrequiresの欄の illuminate/suport という部分がLaravelのどのバージョンに対応しているか表しています。

illuminate/support: ^9|^10|^11|^12|^13.0

となっていますのでver.9~13に対応していることが分かります。

対応しているバージョンでない場合は対応したバージョンの表示となるライブラリのバージョンを右側から選択してください。

※特にやや古いバージョンのLaravelにバージョンアップする場合は少し前のバージョンのライブラリを選択する必要があります。

全て調べ終わったら、composer.jsonを変更し、composer updateを実行します。

依存関係に問題があれば途中でエラーが表示されるのでバージョンの依存関係に間違いがないか再度チェックしてください。

定期的なバージョンアップをしよう

Laravelの現在のメジャーバージョンは基本的にセキュリティアップデートの期限は2年です。

少なくとも2年に1回はバージョンアップするのが理想です。

お客さまの中には古いバージョンのまま保守、追加開発をされている場合もありますが、アップデートを提案して新しい改修案件につなげられるのが理想です。

古いバージョンのまま運用して情報漏洩やサービス停止などの重大インシデントが発生することの防止にもつながります。