Nginx言語(PHP他)PHP開発環境Laravel
更新日 : 2025年2月1日
投稿日 : 2025年1月31日

Laravel8→11にアップグレードした話

Laravel8→11にアップグレードした話の画像

梅子CMSはLaravel8で作成されていましたが、いつの間にやらどんどん本体のアップデートがかかって今や11。

PHPも8系が当たり前になっているし、ここはひとつアップグレードしようか…と思ってやりました。

梅子CMSについてはこちらを参照してください。

開発環境

使っている環境はこちら。

  • Raspberry Pi 
  • Nginx
  • PHP7.4

ラズパイ携帯開発環境です。外に携帯していくことはまあないですが、今後あるかも…

PHPバージョン、phpMyAdminのバージョンアップ

そもそものサーバー環境がPHP7.4に合わせて作られています。

PHP8にバージョンアップするとphpmyadminも動作しなくなるので、こちらもあわせてあげていきます。

PHP7.4→PHP8.3にバージョンアップ

Laravel9はPHP8以上対応です。

開発環境はPHP7.4で止まっていたので、PHP8にあげるところからやっていきます。

リポジトリを使うときに必要になる、GPG キーファイルをダウンロードしてからPHP8をインストール。

sudo wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo apt install php8.3-fpm

その他、必要なライブラリも一緒に入れました。

sudo apt-get install -y php8.3-cli php8.3-common php8.3-mysql php8.3-zip php8.3-gd php8.3-mbstring php8.3-curl php8.3-xml php8.3-bcmath
sudo apt install php-intl

php-intlはphpunitを動かすのに必要でした。

入れたらNginxの再起動です。

sudo systemctl restart nginx

phpMyAdminのアップデート

開発でいつもお世話になるphpMyAdminもPHP8対応にします。

設定ファイルのバックアップを取ってから、インストーラーをダウンロード。

解凍してディレクトリを移動です。

sudo mv /usr/share/phpmyadmin/ /usr/share/phpmyadmin.bak
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip
unzip phpMyAdmin-latest-all-languages.zip
sudo mkdir /usr/share/phpmyadmin
sudo mv phpMyAdmin-*/* /usr/share/phpmyadmin/

このページが参考になりました。

phpMyAdminアップデート方法

Larvel本体のアップデート

ここからはLaravel本体のアップデートをしていきます。

一気にバージョンアップするのも怖いので、ひとつずつあげていきます。

Laravel8→9へアップデート

公式アップグレードガイドを参考に実行します。

  • laravel/framework:”^9.0″
  • nunomaduro/collision:”^6.1″

に変更してcomposer updateをします。

うまくいかないときは理由がログに出るので、何のバージョンがあっていないのか探して実行します。

私の環境では

  • “facade/ignition”: “^2.5″,→”spatie/laravel-ignition”: “^1.0”

も変更しました。

composer.jsonのrequireはこんな感じになりました。

"require": {
    "php": "^7.3|^8.0",
    "fideloper/proxy": "^4.4",
    "fruitcake/laravel-cors": "^2.0",
    "guzzlehttp/guzzle": "^7.0.1",
    "intervention/image": "^2.5",
    "laravel/framework": "^8.12",
    "laravel/tinker": "^2.5",
    "laravel/ui": "^3.2",
    "mews/captcha": "^3.2",
    "mews/purifier": "^3.3"
},
"require-dev": {
    "facade/ignition": "^2.5",
    "fakerphp/faker": "^1.9.1",
    "laravel/sail": "^1.0.1",
    "mockery/mockery": "^1.4.2",
    "nunomaduro/collision": "^5.0",
    "phpunit/phpunit": "^9.3.3"
}

できたらcomposer updateをします。

無事に完了したら

php artisan -V

でバージョンが上がったことを確認します。

梅子CMSシステムのphpunitを実行、問題があればその箇所を修正していきます。

オールグリーンになったら進みます。

Laravel9→10へアップデート

公式アップグレードガイドを参考に実行します。

  • laravel/framework:”^10.0″
  • laravel/sanctum:”^3.2″
  • doctrine/dbal:”^3.0″
  • spatie/laravel-ignition:”^2.0″
  • laravel/passport:”^11.0″
  • laravel/ui:”^4.0″

この辺りを変更します。

現時点で使用していないものについては、追記する必要はありません。また、上記のほかに

  • fruitcake/laravel-cors
  • fideloper/proxy

を削除します。

fruitcake/laravel-corsは10から標準サポートになったので、package.jsonで指定しなくてよくなったからとのこと。

こちらの記事が参考になりました。

Laravel10への更新作業 – ビットハット

できたらcomposer updateをします。

無事に完了したら

php artisan -V

でバージョンが上がったことを確認します。

最終的にcomposer.jsonのrequireはこのようになりました。

"require": {
    "php": "^7.3|^8.0",
    "fideloper/proxy": "^4.4",
    "fruitcake/laravel-cors": "^2.0",
    "php": "^8.0",
    "guzzlehttp/guzzle": "^7.0.1",
    "intervention/image": "^2.5",
    "laravel/framework": "^9.0",
    "laravel/framework": "^10.0",
    "laravel/tinker": "^2.5",
    "laravel/ui": "^3.2",
    "laravel/ui": "^4.2",
    "mews/captcha": "^3.2",
    "mews/purifier": "^3.3"
},
"require-dev": {
    "spatie/laravel-ignition": "^1.0",
    "spatie/laravel-ignition": "^2.0",
    "fakerphp/faker": "^1.9.1",
    "laravel/sail": "^1.0.1",
    "mockery/mockery": "^1.4.2",
    "nunomaduro/collision": "^6.1",
    "phpunit/phpunit": "^9.3.3"
    "nunomaduro/collision": "^7.0",
    "phpunit/phpunit": "^10.0"
}

完了後にシステムを動かそうとするとエラーが出ますので、該当箇所を直していきます。

app/Http/Kernel.phpの修正

\Fruitcake\Cors\HandleCors::class,
↓
\Illuminate\Http\Middleware\HandleCors::class,

に修正します。fruitcake/laravel-corsの関係です。

app/http/Middleware/TrustPrioxiesの修正

use Fideloper\Proxy\TrustProxies as Middleware;
↓
use Illuminate\Http\Middleware\TrustProxies as Middleware;

にします。

ここまで修正してシステムが動くようになったら梅子CMSシステムのphpunitを実行、問題があればその箇所を修正していきます。

オールグリーンになったら次に進みます。

Laravel10→11へアップデート

公式アップグレードガイドを参考に実行します。

  • laravel/framework:”^11.0″
  • nunomaduro/collision:”^8.1″

最低でもこの2つを書き換えて実行します。

後は必要に応じてバージョンを書き換えてcomposer updateをします。

最終的にcomposer.jsonのrewquireはこのようになりました。

"require": {
    "php": "^8.0",
    "guzzlehttp/guzzle": "^7.0.1",
    "intervention/image": "^2.5",
    "laravel/framework": "^11.0",
    "laravel/sanctum": "^4.0",
    "laravel/tinker": "^2.5",
    "laravel/ui": "^4.2",
    "mews/captcha": "^3.2",
    "mews/purifier": "^3.3"
},
"require-dev": {
    "spatie/laravel-ignition": "^2.0",
    "fakerphp/faker": "^1.9.1",
    "laravel/sail": "^1.0.1",
    "mockery/mockery": "^1.4.2",
    "nunomaduro/collision": "^8.1",
    "phpunit/phpunit": "^10.0"
}

無事に完了したら

php artisan -V

でバージョンが上がったことを確認します。

確認出来たら、梅子CMSシステムのphpunitを実行、問題があればその箇所を修正していきます。

オールグリーンになったら完了です。

まとめ

梅子CMSのLaravel8から11にアップグレードしたときの話を書きました。

8→9にする前にPHPのバージョンをあげておくこと、Laravel9→10のアップデートで諸々のエラーが出て修正が多かったように思います。

10→11はそんなに大変ではありませんでした(梅子CMSの場合ですが)。

面倒でもphpunitの試験を書いておいてよかったなと思いました…テストはこういうときに力を発揮してくれますね。

梅子CMSについてはこちらを参考にしてください。

参考

PR

※本サイトはアフィリエイトプログラムを利用して商品を紹介しています。