Laravel SailでPHPのバージョンを変更する

Laravel Sailでプロジェクトを作成するとデフォルトで最新のPHPバージョンが選択されますが、レンタルサーバーなどで利用できるPHPのバージョンが限定される場合に困ります。

この記事ではLaravel Sailで利用するPHPのバージョンを変更する手順を紹介します。

この記事でわかること

  • Laravel(Laravel Sail)で利用するPHPのバージョンの変更方法

docker-compose.ymlの修正

Laravel SailではPHP実行環境をDockerコンテナで利用可能にしています。Laravelの開発で利用するDockerコンテナは作成したLaravelプロジェクト内のdocker-compose.ymlファイルに定義されていますので、定義ファイルを修正することで利用するPHPのバージョンを変更することが可能です。

ここではPHP8.1からPHP8.0に変更してみます。Laravelプロジェクトのディレクトリにあるdocker-compose.ymlを開き、laravel.testサービス内のbuild部分とimage部分を変更します。

docker-compose.yml(変更前)
...(省略)
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.1/app
...(省略)
docker-compose.yml(変更後)
...(省略)
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/app
...(省略)

2022/08/05現在、利用できるPHPのバージョンは7.48.08.1の三種類です。

コンテナイメージの再構築

設定を反映するために以下のコマンドを実行します。Linuxターミナルから実行してください。

Bash
sail build --no-cache

コンテナの再構築には時間がかかりますのでコーヒーでも飲みながら気長に待ちましょう。

再構築が完了したらコンテナを起動します。

Bash
sail up -d

これでPHPのバージョンが変更できました。

PHPパッケージの更新

PHPのバージョンを変更した直後はhttp://localhostにアクセスしても正常にLaravelアプリが表示されないと思います。理由はLaravelが依存しているPHPパッケージ群が変更前のPHPバージョンに合ったものを利用しようとしているからです。そこで正しくLaravelが使えるように以下のコマンドを実行して新しいPHPバージョンに合ったPHPパッケージに更新しましょう。

Bash
sail composer update

PHPパッケージの更新が終わったらコンテナを再起動します。

Bash
sail restart

http://localhostにアクセスしてLaravelアプリが起動していることを確認してみましょう。PHPのバージョンが正しく変更されていればWelcome画面の右下に変更後のPHPバージョンが表示されるはずです。

PHPバージョン変更後のWelcome画面

まとめ

この記事ではLaravel Sailで利用するPHPのバージョン変更について解説しました。デプロイ先がレンタルサーバーの場合はPHPのバージョンが決められている、あるいはバージョンが低い場合がありますので、この方法で実行環境に合ったPHPバージョンに切り替えてからLaravelアプリの開発を行うと良いと思います。

以上です。それではまた。