Skip to content

在使用 Laravel Forge 和 Sail 时如何更新 PHP 版本 ​

1. 更新 composer.json ​

第一步是确保 composer.json 中的版本与您计划安装的 PHP 版本相匹配。在本例中,我们将使用 8.2.14。

json
{
  "require": {
    "php": "8.2.14"
  }
}

2. 运行 sail up -d ​

这个命令会启动 Sail 容器,以防它们没有运行。

3. 运行 sail composer update ​

重要的是要运行 sail composer update 以确保 composer.lock 文件已更新并与 composer.json 文件中所做的更改同步。

4. 在 Laravel Forge 中更新 ​

在推送更改之前,请确保您运行的是与 composer.json 中设置的完全相同的 PHP 版本。您可以通过单击"Patch"来安装当前 PHP 版本的安全补丁。请注意,Forge 不允许您设置特定版本,因此您可能需要更新到您正在使用的 PHP 版本的最新补丁,并在 composer.json 中设置该版本以确保它们匹配。

Laravel Forge

5. 推送更改 ​

根据您的 Forge 配置,您可能需要手动部署,或者部署可能会根据对特定分支的提交自动进行。

PHP 版本不匹配时的部署错误示例 ​

bash
Root composer.json requires php 8.2.13 (exact version match: 8.2.13 or 8.2.13.0) but your PHP version (8.2.14) does not satisfy that requirement.

在这种情况下,请确保您的 composer.json 反映了正确的版本,并且不要忘记运行 sail composer update 将这些更改应用到 composer.lock。

如果由于 Docker 容器版本不匹配而导致 sail composer update 命令失败,您可以运行 sail up --build 以使用 docker-compose.yml 中设置的最新版本的 PHP 重建 Laravel 容器。

yml
services:
    laravel.test:
        build:
            context: ./docker/8.2
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.2/app

由于我使用的是 /docker/8.2/Dockerfile,重建容器会安装 PHP 的 8.2.14 版本。