こんにちはー!むちょこです。
まだまだLaravel5.5を利用している方も多いかと思いますが、このバージョンは2020年8月30日にサポートが終了します。
https://laravel.com/docs/master/releases
この記事では、LTSのより新しいバージョンである6系にバージョンアップするための手順をご紹介します。他のバージョンへアップグレードする場合でも、基本的には同様の手順でアップグレードできるはずです。
1. サーバ要件を確認する
各バージョンごとにサーバ要件が異なるので、まず開発環境で要件が揃っているか確認します。
Laravel6系のサーバ要件
https://laravel.com/docs/6.x/installation
- PHP> = 7.2.0
- BCMath PHP拡張
- Ctype PHP拡張
- JSON PHP拡張
- Mbstring PHP拡張
- OpenSSL PHP拡張
- PDO PHP拡張
- Tokenizer PHP拡張
- XML PHP拡張
自分の環境を確認するためのLinuxコマンド
# PHPのバージョン
$ php -v
# PHPモジュール
$ php -m
もし現行サーバが要件を満たしていない場合は、別のサーバを用意するなどして要件を満たした開発環境を構築します。
LAMP環境の構築手順を忘れてしまった方はこちらをご覧ください✨
LAMP環境の構築手順2. 本番環境のプロジェクトを再現する
まずは現在の本番環境と同じ状態を再現します。
既存のLaravelプロジェクトをcloneする手順3. 1段階ずつアップグレードしていく
バージョンを一気に上げると、互換性のない部分の対応が抜け落ちてしまうリスクが増えるので地道に1段階ずつアップグレードしていきます。
アップグレードの手順や注意点は公式ドキュメントに掲載されています。
https://laravel.com/docs/5.6/upgrade#upgrade-5.6.0
(英語が苦手な方はこちら→ https://readouble.com/laravel/5.6/ja/upgrade.html )
バージョンアップの必要があるパッケージや、互換性のないコードについて記載されていますので必ず熟読し漏れがないよう対応していきましょう。
パッケージのバージョンアップ
composer.jsonを編集し、composer updateコマンドで更新します。
更新に時間がかかったり停止してしまうことがありますが、-vvvオプションをつけるとリアルタイムで状況が確認できるので便利です。
$ vim composer.json
$ composer update -vvv
エラーが出たら都度解消します。
Killedと表示され途中で終了しまった場合は、慌てず再度実行しましょう。何度も終了してしまう場合はswap領域を増やしてください。
もしもSomething’s changed, looking at all rules againの途中で止まってしまうようでしたら、依存関係の解決に失敗している可能性があります。
サードパーティーの(プロジェクト特有の)パッケージを入れている場合は、そちらのバージョンも忘れずに合わせましょう。
composer updateが上手くいったらLaravelのバージョンが更新されていることを確認します。
$ php artisan --version
Laravel Framework 5.6.39
コードの編集
プロジェクトの中に廃止された機能を使っている箇所があれば、コードを編集して対応させます。
該当箇所はgrepで探すと楽です。
$ grep -R 探したいコード 探すディレクトリ
テスト
phpunitや実際にブラウザから操作してテストし、異常を見つけたら都度修正します。
3を繰り返して、目的のバージョンまでアップグレードしたら完了です。
https://laravel.com/docs/5.7/upgrade#upgrade-5.7.0
https://laravel.com/docs/5.8/upgrade#upgrade-5.8.0
https://laravel.com/docs/6.x/upgrade#upgrade-6.0
お疲れ様でした✨