⬇️

今更Laravel8+PHP7.4のプロジェクトを構築する

2023/05/19に公開

現時点(2023-05-18)の最新バージョンは Laravel 10+PHP8.2 ですが、Laravel 8+PHP7.4(いずれもサポート切れ)でプロジェクトを作成する必要に迫られました。
幸いお蔵入りしましたが、試行錯誤したので手順を記録として残しておきます。

※Laravelのサポート期限はLaravel Versionsで確認できます
https://laravelversions.com/ja

やりたいこと

過去のバージョン(Laravel 8+PHP7.4)のLaravelプロジェクトをSailで構築したい。

環境

Windows WSL2
Docker Desktop 4.19.0 (106363)
Ubuntu 22.04.2 LTS
PHP 8.1.2
Composer 2.2.6

sailコマンドはエイリアスを設定済です。エイリアスを設定しない場合は ./vendor/bin/sailと読み替えてください。

以下、手順。


Laravel 8 のプロジェクトを作成

composer create-project laravel/laravel:^8.0 プロジェクト名

Sailのインストール

PHP7.4で動く最終バージョンのv1.19.0を指定。

cd プロジェクト名
composer require laravel/sail:"v1.19.0" --dev
php artisan sail:install

docker-compose.ymlのPHPのバージョン変更

参考:
https://readouble.com/laravel/8.x/ja/sail.html

docker-compose.ymlを編集。

services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/7.4 <= 8.2から変更
	    ・・・
        image: sail-7.4/app <= 8.2から変更	    

Sailのビルド&立ち上げ

sail build --no-cache
sail up

バージョン確認

PHP

sail php --version

出力結果は次のとおり。PHP7.4が入っている。

PHP 7.4.33 (cli) (built: Feb 14 2023 18:31:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
    with Xdebug v3.1.6, Copyright (c) 2002-2022, by Derick Rethans

Laravel

sail artisan --version

出力結果は次のとおり。Laravel 8が入っている。

Laravel Framework 8.83.27

言語の設定

config/app.phpを修正。

'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
'faker_locale' => 'ja-JP',

.envの修正

APP_NAME、DB接続情報などを修正。

マイグレーション実行

sail artisan migrate

Laravel Breezeインストール

ログイン機能などを簡単に作りたかったのでLaravel Breezeを利用することにしました。

参考:
https://readouble.com/laravel/8.x/ja/starter-kits.html
https://stackoverflow.com/questions/72799267/why-laravel-vite-directive-not-working-in-my-project

Laravel 8 に対応しているバージョンは1.9.4のようなので、バージョンを指定してインストール。

sail composer require laravel/breeze:1.9.4 --dev
sail artisan breeze:install
sail npm install
sail npm run dev

動作確認

http://localhost にアクセスし、右上の「Register」からユーザの登録が行えればOK。

Discussion