Vagrant box无法更新至v12.2.0以上版本,求助添加新版PHP
问题描述
- 官网显示Homestead最新版本为v14.0.2,但执行
vagrant box update时系统提示当前已是最新版本,实际Box仍停留在PHP 8.1,无法获取更高版本PHP - Homestead的
release分支已同步到最新状态,删除Box后重新操作问题依旧 - 执行
vagrant up --provision时出现如下报错:
C:\Users\edgar\Homestead>vagrant up --provision
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'laravel/homestead' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: 14.0.2
==> default: Loading metadata for box 'laravel/homestead'
default: URL: https://vagrantcloud.com/api/v2/vagrant/laravel/homestead
The box you're attempting to add has no available version that
matches the constraints you requested. Please double-check your
settings. Also verify that if you specified version constraints,
that the provider you wish to use is available for these constraints.
解决步骤
1. 手动指定版本添加Box
先彻底清理旧Box,再手动拉取指定版本:
- 查看本地已安装的Box:
vagrant box list - 删除旧的Homestead Box:
vagrant box remove laravel/homestead --box-version 12.x.x(替换为你实际的v12版本号) - 手动添加v14.0.2版本:
vagrant box add laravel/homestead --box-version 14.0.2
若遇到Provider匹配问题,追加参数:vagrant box add laravel/homestead --box-version 14.0.2 --provider virtualbox
2. 同步Homestead配置文件版本
确保本地配置文件与v14版本匹配:
- 进入Homestead目录,拉取最新release分支:
git pull origin release - 复制默认配置文件(Windows系统把
cp换成copy):cp Homestead.yaml.example Homestead.yaml - 重新配置你的站点、数据库等个性化信息
3. 现有v12环境手动安装高版本PHP
如果无法升级到v14 Box,可在当前环境中手动安装更高版本PHP(以PHP 8.2为例):
- 登录虚拟机:
vagrant ssh - 添加PHP官方源:
sudo add-apt-repository ppa:ondrej/php sudo apt update - 安装PHP 8.2及常用扩展:
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip - 切换默认PHP版本并重启服务:
sudo update-alternatives --set php /usr/bin/php8.2 sudo service nginx restart sudo service php8.2-fpm restart - 在
Homestead.yaml中指定站点使用PHP 8.2:sites: - map: your-site.test to: /home/vagrant/code/your-site/public php: "8.2" - 重新执行配置:
vagrant provision
4. 排查版本约束问题
如果vagrant up --provision提示版本不匹配,检查以下内容:
- 打开
Vagrantfile,查找是否有固定版本的配置行,比如config.vm.box_version = "12.x.x",修改为"14.0.2"或改为宽松约束>= 14.0.2 - 确认你的VirtualBox版本是否满足v14 Box要求(通常需要6.1以上版本),升级VirtualBox后再尝试
内容的提问来源于stack exchange,提问作者eaponz

