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 版本。