Laravel Valet 仅支持 macOS,通过 dnsmasq + nginx 实现轻量本地开发,需 Homebrew 管理 PHP(≥8.1),valet park 后须确保项目含 server.php 或 public/index.php,切换 PHP 版本需 brew unlink/link 配合 valet use。

用 Laravel Valet 搭建 PHP 开发环境,只适合 macOS 且本地开发场景;它不是 Docker,也不跑 Apache/Nginx 全量服务,而是靠 dnsmasq + nginx 轻量代理,把每个项目目录直接变成 http://xxx.test。
Valet 只支持 macOS,Windows/Linux 用户别折腾
Valet 依赖 macOS 的 launchd、dnsmasq 和系统级网络配置,官方明确不支持 Windows 或 Linux。想在非 macOS 上获得类似体验,得换方案:docker-compose + nginx 配置,或用 php -S 临时跑单项目——但那就不是 Valet 了。
- 装之前先确认系统:运行
sw_vers看是否输出ProductName: macOS - Homebrew 必须已安装,Valet 通过它装
nginx、php、dnsmasq - 别用
sudo pecl或手动编译 PHP —— Valet 要求 PHP 由 Homebrew 管理,版本需 ≥ 8.1(Laravel 10+ 推荐)
装完 valet park 后访问 404?检查这三处
valet park 是核心命令,但它只是告诉 Valet “这个文件夹里的所有子目录都可被路由”,并不自动启用 PHP 或写配置。常见 404 多因路径、权限或 PHP 模块缺失。
- 确保当前目录是父级工作区,比如
~/Sites,执行valet park后,~/Sites/myapp才能响应http://myapp.test - PHP 需启用
opcache和mbstring:运行php -m | grep -E '^(opcache|mbstring)$',缺哪个就brew reinstall php再试 - 如果项目根目录没有
server.php(Laravel 默认有),Valet 会 fallback 到静态文件逻辑,导致 Laravel 路由不生效 —— 此时访问/返回 404 是正常现象,要确保public/是 Web 根,且index.php存在
valet use php@8.2 不生效?别跳过 brew unlink
Valet 切换 PHP 版本本质是让 Homebrew 切换 symlink,但旧版 PHP 可能仍被系统缓存或未完全卸载。
立即学习“PHP免费学习笔记(深入)”;
brew unlink php@8.1 brew install php@8.2 brew link --force php@8.2 valet use php@8.2
漏掉 brew unlink 或没加 --force,会导致 valet use 显示成功,但 php -v 仍是旧版。验证方式不是看 Valet 输出,而是直接跑:
-
which php应返回/opt/homebrew/bin/php(Apple Silicon)或/usr/local/bin/php(Intel) -
php -v和valet status里显示的 PHP 版本必须一致 - Laravel 项目中
phpinfo()页面也要匹配,否则.env里APP_DEBUG=true报错可能被误判为框架问题
Valet 的“便捷”建立在约定之上:目录结构、PHP 管理方式、DNS 解析逻辑都不可绕过。一旦项目需要多 PHP 版本共存、HTTPS 自签名以外的证书、或跨团队统一环境,它反而比写几行 docker-compose.yml 更难维护。











