Laravel のサイトをアップグレードする機会がありましたので、その方法をここで書いておきたいと思います。かなり構成というか書き方が変わってきているので注意が必要です。
1. 新しいLaravelプロジェクトの作成
まずはクリーンなLaravel環境を作成します。
composer create-project laravel/laravel new-site
2. 既存コードの移行
必要なファイルを新しいプロジェクトにコピーします:
コントローラ →
app/Http/Controllers
モデル →
app/Models
ビュー →
resources/views
ルーティング →
routes/web.php
またはroutes/api.php
ミドルウェア、サービス、ジョブなど → 必要に応じて
3. Composerのオートロードを更新
クラスのオートロードを再生成します。
composer dump-autoload
4. 必要なパッケージの再インストール
Spatieの権限管理パッケージを使っている場合なら
composer require spatie/laravel-permission
5. Apacheの設定に注意
重要なのが、Apacheの mod_rewrite
モジュールを有効化することです。これはひっかかりました。これを忘れるとルーティングが正しく機能せず、トップページしか表示できません。
LoadModule rewrite_module modules/mod_rewrite.so
6. ルーティングの見直し・更新
Laravelのバージョンアップに伴い、ルーティングの記述方法や構文が変更されていることがあります。
クロージャベースのルートやコントローラルートにおける名前空間の指定方法
Route::controller()
やRoute::middleware()
を使用したグルーピング構文Web/APIルートファイルでのミドルウェアやプレフィックスの指定
Laravel 8以降では、RouteServiceProvider が変更されましたので変更が必要な場合があります。web.php の記述はこれで動きます。