laravel 6 应使用 homestead 9.7.2(php 7.4),禁用高版本 box;macos m1/m2/m3 需装 virtualbox-arm64 并验证 apple 架构;homestead.yaml 中 folders map 必须用绝对路径,sites 域名需与 /etc/hosts 一致,db_host 应设为 localhost 而非 127.0.0.1。

Laravel 6 已于 2021 年结束官方支持,不建议在新项目中使用;但若你确需在 macOS 上为遗留 Laravel 6 项目配置 Vagrant 开发环境,核心不是“适配 Laravel 6”,而是选用兼容的 Homestead 版本 + 正确的 PHP/MySQL 组合。Homestead 官方明确标注了各版本支持的 Laravel 和 PHP 版本范围,Laravel 6 要求 PHP 7.2–7.4,不能用 PHP 8+。
确认 Homestead 版本与 PHP 兼容性
Homestead 本身不区分 Laravel 版本,只约束底层运行时。查官方文档可知:
-
Homestead 9.x(对应 Vagrant boxlaravel/homestead 9.7.2)默认 PHP 7.4,完美支持Laravel 6 -
Homestead 10.x+默认 PHP 8.0+,启动后php artisan会直接报错:Class "Illuminate\Foundation\Application" not found - 不要用最新版 Homestead init 脚本生成的默认配置——它大概率拉取的是 13.x/14.x box
实操建议:
- 先执行
vagrant box list,确认本地没有高版本laravel/homestead - 手动添加指定旧版 box:
vagrant box add laravel/homestead --box-version 9.7.2 - 初始化时指定该版本:
vagrant init laravel/homestead --box-version 9.7.2
避免 VirtualBox + Apple Silicon(M1/M2/M3)的 SSH 失败
Mac 上用 Vagrant + VirtualBox 运行 Homestead,在 Apple Silicon 芯片上极易卡在 vagrant up 后的 SSH 连接环节,错误类似:
vagrant ssh timeout: connect timeout (10s)
这不是网络问题,而是 Rosetta 2 兼容层导致 VirtualBox Guest Additions 加载失败。解决方法只有两个:
- 用
virtualbox-arm64替代普通virtualbox:brew install --cask virtualbox-arm64 vagrant - 验证是否原生运行:打开「活动监视器」→ 搜索
VirtualBox→ 看「体系结构」列是否为Apple(不是Intel) - 如果已装错,必须彻底卸载:
brew uninstall --cask virtualbox && brew install --cask virtualbox-arm64,再重试vagrant up
homestead.yaml 中的关键配置项
旧版 Homestead(9.x)对路径映射和站点配置更敏感,稍有不慎就 403 或 500。以下字段必须显式检查:
-
folders:下的map:必须是**绝对路径**,且 macOS 用户目录不能写成~/Code,得写成/Users/yourname/Code -
sites:中的map:域名(如laravel6.test)必须与 macOS 的/etc/hosts一致:192.168.10.10 laravel6.test -
features:若项目不用 MySQL,可关掉:- mysql: false,改用 SQLite 避免端口冲突或权限问题 - PHP 版本无需手动切——9.7.2 box 固定为 PHP 7.4,
php -v在vagrant ssh后应输出PHP 7.4.33
常见报错及绕过方式
遇到这些错误别急着重装,多数是 Homestead 9.x 的已知行为:
-
The box 'laravel/homestead' could not be found:说明--box-version指定失败,换用完整 URL:vagrant box add https://vagrantcloud.com/laravel/boxes/homestead/versions/9.7.2/providers/virtualbox.box --name laravel/homestead -
Failed to mount folders in Linux guest:VirtualBox Guest Additions 版本不匹配,执行:vagrant plugin install vagrant-vbguest,再vagrant reload --provision -
artisan migrate fails with "SQLSTATE[HY000] [2002] Connection refused":检查.env中DB_HOST=127.0.0.1→ 改为DB_HOST=localhost(Homestead 内 MySQL 绑定的是 localhost,非 127.0.0.1)
最后提醒:Homestead 是重量级方案,仅当项目强依赖特定系统组件(如旧版 OpenSSL、特定扩展)时才值得用。对纯 Laravel 6,valet use php@7.4 + SQLite 更快更稳——Vagrant 启停动辄一分半,而 Valet 切换 PHP 版本只要 3 秒。











