在使用 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
中设置该版本以确保它们匹配。
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
版本。