0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel 6から Laravel 9にアップデートする際にやったこと

Last updated at Posted at 2023-06-10

個人開発でちょっとしたLaravelのWebアプリを作ったことがあって、それをリニューアルしたいと思ってバージョンをあげました。Laravel 6は既にサポートが終了していたので、選択肢としては9と10があったのですが、アップデート手順の紹介がされているサイトの多くが6から9へのアップデートに合わせました。
※おそらく同じような手順で10へのアップデートもできると思います。

まずはPHPバージョンのアップデート

自分のPCはWindowsで手早く修正したかったので、PHPはXAMPで用意しました。
前に入っていたXAMPが古かったので、最新版をダウンロードしてインストールを実施しました。
XAMPはApacheも含んでいるため、htdoc配下にプロジェクトファイルを置いて動作確認しました。

Composerのアップデート

Laravelをアップデートする前にまずはパッケージマネージャを新しくする必要があるので、
Composerをアンイストールし、最新版のComposerをインストールしました。

composer.jsonの書き換え

Laravelのバージョン変更によって、依存するライブラリ群のバージョンも合わせる必要があるので、
自分の場合は、下記のようにcomposer.jsonを書き換えました。
※ここは人によって入っているライブラリが異なるのでここにないものが入っている方は各自で調べてください。

変更前

    "require": {
        "php": "^7.2",
        "barryvdh/laravel-debugbar": "^3.6",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.0",
        "laravel/tinker": "^1.0"
    },
    "require-dev": {
        "facade/ignition": "^1.4",
        "fzaninotto/faker": "^1.4",
        "laravel/ui": "1.0",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^3.0",
        "phpunit/phpunit": "^8.0"
    },

変更後

    "require": {
        "php": "^8.2",
        "barryvdh/laravel-debugbar": "^3.6",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^9.0",
        "laravel/tinker": "^2.7",
        "laravel/ui": "^4.0"
    },
    "require-dev": {
        "spatie/laravel-ignition": "^1.0",
        "fakerphp/faker": "^1.9.1",
        "mockery/mockery": "^1.4.4",
        "nunomaduro/collision": "^6.1",
        "phpunit/phpunit": "^9.5.10"
    },

ソースの修正

使っていたライブラリや書き方が変わってしまったところがあるので、エラーが出ているソースを順次直していきました。

自分の例をあげておきます。

Exceptions\Handler.php

・use Exception; を use Throwable; に変えて、Exceptionと記述のあるところをThrowableに変更
・use Illuminate\Validation\ValidationException; のuse文を追加

Controller.php

・use Throwables;が必要なところを追加

Middleware\TrustProxies.php

・headersの変数定義を次のように変更

変更前

    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;

まとめ

Laravelのアップデートは使ってるライブラリによって、修正手順が大きく異なるので、一概にこの方法で上手くいくとは言えません。ただやり方の流れ自体は変わらないと思います。

  1. PHPやComposerのアップデート
  2. composer.jsonの依存関係を考慮したライブラリのアップデート
  3. 各ソースでエラーが出ている箇所をエラー名で検索して解決策を探す

モノによっては解決策が海外のサイトにしか載ってないってことがザラにあるので、
英語だからといって敬遠せずにちゃんと内容を見て該当するか確認しましょう。

※最近のブラウザの翻訳機能は精度が良いので翻訳すればだいたいわかると思います。
 あとはChatGPTで聞いてみるというのも一つの方法かもしれません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?