Herd 是 Valet 的并行替代方案而非升级版,设计哲学不同:Valet 适合命令行控和高定制用户,Herd 面向开箱即用、图形化操作及默认 HTTPS 的开发者。

Herd 不是 Valet 的“升级版”,而是官方推出的并行替代方案,目标一致但设计哲学不同:Valet 适合命令行控和定制需求强的用户,Herd 面向追求开箱即用、图形化操作和 HTTPS 默认启用的开发者。
为什么 herd open 打不开项目?
常见错误是项目没放在 Herd 的停放路径里。默认只识别 ~/Herd 目录下的子文件夹,其他位置的项目不会自动托管。
- 检查当前项目路径是否在
~/Herd/myapp下;如果不是,要么移动过去,要么在 Herd 设置中添加新停放路径 - 确保项目根目录有
public/index.php(Laravel 标准结构),否则 Herd 会跳过该目录 - 运行
herd list看项目是否出现在已识别站点列表中;若没有,说明未被扫描到 - Herd 不读取
.valet配置或valet link绑定,旧 Valet 的myapp.test域名不会自动生效
herd link 和 valet link 的行为差异
两者都用于绑定自定义域名,但实现机制和兼容性完全不同。
-
herd link myproject会在~/Sites或你指定的关联目录下创建软链接,并让myproject.test指向它;不依赖系统级 dnsmasq 配置,Herd 自带 DNS 服务 -
valet link依赖全局valet install后配置的 dnsmasq 规则,且要求~/.config/valet存在并可写 - 不能混用:在已运行 Valet 的机器上直接装 Herd,
herd link不会覆盖 Valet 的 DNS 规则,可能造成域名解析冲突 - 如果想彻底切换,先运行
valet stop && valet uninstall,再启动 Herd,避免端口(80/443)或 DNS 抢占
PHP 版本切换后 php --version 没变?
Herd 管理的是其内部服务使用的 PHP,不影响终端全局 php 命令——这点和 Valet 一致,但容易误解。
-
herd php list查看 Herd 内置支持的 PHP 版本 -
herd php use 8.2切换 Herd 服务所用 PHP,影响 Web 请求和herd tinker - 终端里执行的
php --version仍由系统 PATH 决定;若要统一,需手动把 Herd 的 PHP 路径(如/opt/herd/bin/php)加入 shell 配置 - 项目级切换用
herd php use 8.3 --for=myproject,会生成.herd-php文件,优先级高于全局设置
Herd 的 HTTPS 默认启用看似省事,但本地调试某些依赖 HTTP 协议的第三方 SDK(比如部分微信 JS-SDK 测试逻辑)时,会因强制跳转 https:// 导致失败,这个细节常被忽略。需要临时关闭 HTTPS,得进 Herd 设置里关掉「Force HTTPS」开关,而不是改 Nginx 配置——Herd 不暴露底层配置文件。


















