Homestead 已被 Laravel 11 正式弃用,官方推荐改用 Laravel Sail 或本地 PHP+Composer;仍可启动旧项目,但不再更新,最新版 v22.10.0 需 Vagrant 2.3.7+ 和 VirtualBox 7.0+。

Homestead 已于 Laravel 11 发布时正式弃用,官方推荐直接使用 Laravel Sail(基于 Docker)或本地 PHP + Composer 环境。如果你正在新项目中考虑 Homestead,现在就该停手——它不再接收功能更新,Vagrant 盒子也已停止维护。
Homestead 还能启动吗?
可以,但仅限旧项目临时维护。最新可用版本是 v22.10.0(基于 Ubuntu 22.04),依赖 Vagrant 2.3.7+ 和 VirtualBox 7.0+。常见失败点不是配置问题,而是:
-
Vagrant up卡在default: Waiting for machine to boot...→ 大概率是 VirtualBox 扩展包未安装或 BIOS 中 VT-x/AMD-V 被禁用 - 启动后
homestead.test解析失败 → 不是/etc/hosts没加,而是 macOS / Windows 的 DNS 缓存没清(macOS 执行sudo dscacheutil -flushcache,Windows 用ipconfig /flushdns) - SSH 连接被拒绝 →
Homestead.yaml中的ports段误删了- send: 2222, to: 22,或 VirtualBox 网络设成了 NAT 模式但端口转发未配
为什么 homestead make 生成的 Vagrantfile 启动报错?
因为 Laravel 10+ 的 laravel/homestead 包默认不再内置 Vagrantfile 模板,homestead make 实际调用的是全局安装的 laravel/homestead v13+ 版本,而该版本要求你手动复制模板:vendor/bin/homestead make(注意路径)。更常见的问题是:
- 执行命令时不在项目根目录 → 生成的
Homestead.yaml里folders的map值为空或错位 -
features开启了mysql但宿主机 3306 已被占用 → Vagrant 启动时 MySQL 服务无法绑定,日志里会反复出现Job for mysql.service failed - 用了
php: "8.2"但盒子镜像只支持到 PHP 8.1 → 报错Unsupported PHP version,需降级或换用laravel/homesteadv14(实验性支持 8.2)
替代方案怎么平滑过渡?
如果你已有 Homestead 项目,迁移成本其实很低。Sail 不需要重写配置,只需三步:
- 运行
composer require laravel/sail --dev(Laravel 8.77+ 自带,不用额外装) - 执行
php artisan sail:install→ 它会自动生成docker-compose.yml,并把Homestead.yaml里的folders、sites、databases映射成对应 Docker 卷和环境变量 - 把 Nginx 配置从
~/.homestead/after.sh移到docker/8.2/php.ini或docker/8.2/www.conf(Sail 的 PHP-FPM 配置挂载点)
注意:Sail 默认不暴露 SSH 端口,调试时用 ./vendor/bin/sail shell 进容器;MySQL 容器默认 root 密码是 password,不是 Homestead 里的 secret。
真正容易被忽略的点是时间同步:Homestead 使用 VirtualBox Guest Additions 自动校时,而 Docker Desktop 在 macOS/Windows 上默认不与宿主机共享时钟,会导致队列任务延迟、缓存过期异常。解决方案是启动时加 environment: 块:TZ: "Asia/Shanghai",并在 php.ini 里显式设 date.timezone = Asia/Shanghai。


















