valet访问404是因为只响应.test域名且项目必须在valet park指定的根目录(如~/sites)下直接子目录,而非桌面或嵌套路径;需运行valet parked确认注册、用myapp.test访问、避免localhost端口,并注意dns缓存与php版本切换后扩展重装。

Valet 启动后访问域名返回 404
不是 Valet 没跑起来,而是它默认只响应 *.test 域名,且项目目录必须在 ~/Sites(或你用 valet park 指定的根目录)下。常见错误是把项目放在桌面、Downloads 或任意子目录——Valet 不会递归扫描,只认“park 目录下的直接子目录”作为站点。
- 确认项目路径:运行
valet parked,看输出里有没有你的项目名(即目录名) - 如果没出现,cd 到父目录(比如
~/Sites),执行valet park;再 cd 进项目目录,确保它只是~/Sites/myapp,而非~/Sites/projects/myapp - 域名必须用
myapp.test,不能用localhost:8000或127.0.0.1—— Valet 是 DNS+HTTPS 代理,不走传统端口绑定 - Mac 系统升级后偶尔 DNS 缓存异常,可试
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
PHP 版本切换后 Valet 无法加载扩展
Valet 自带 PHP 管理(valet use php@8.2),但它只改 CLI 和 FPM 的二进制链接,不自动重装扩展。比如你从 PHP 8.1 切到 8.2,pdo_mysql、redis 这些扩展还在旧版本里编译过,新 PHP 找不到。
- 切版本后务必执行
valet install—— 它会重新配置 PHP-FPM、重载 Nginx,并触发扩展重编译(前提是 Homebrew 已安装对应版本的扩展包,如php@8.2-redis) - 检查扩展是否启用:
php -m | grep redis(CLI)和php-fpm -m | grep redis(FPM),两者结果应一致 - Homebrew 安装扩展时注意命名:PHP 8.2 对应
php@8.2-redis,不是php-redis;漏掉版本号会导致装错位置
Nginx 配置被 Valet 覆盖导致自定义规则失效
Valet 每次运行 valet install 或 valet restart 都会重写 /usr/local/etc/nginx/valet/valet.conf 和站点 conf 文件,手动改过的配置会被清空。
- 不要直接编辑
valet.conf,改~/.valet/Nginx/下的同名文件(如myapp.test),Valet 重启时会优先读这里 - 想全局加 header 或 rewrite,把规则写进
~/.valet/Nginx/localhost(它会被包含进主配置) - 修改后必须
valet restart,仅brew services restart nginx不生效 —— Valet 管理的是自己编译的 Nginx 实例,不是 Homebrew 默认的
MySQL 连接失败:Valet 默认不启动数据库服务
Valet 只管 Web 服务(PHP+Nginx),MySQL、PostgreSQL、Redis 都得自己装、自己启。很多人以为 valet install 会配好全套,结果 Laravel DB_CONNECTION=mysql 报 Connection refused。
- 用 Homebrew 装 MySQL:
brew install mysql,然后brew services start mysql - 首次启动后需初始化 root 密码:
mysql_secure_installation,否则 Laravel 连接时提示 access denied - Laravel 的
.env里DB_HOST=127.0.0.1(不是localhost),因为 macOS 上localhost会走 socket,而 Homebrew MySQL 默认监听 TCP - 如果要用
localhost,得在 MySQL 配置里加bind-address = 127.0.0.1并确保skip-networking关闭
真正麻烦的不是装,是每次系统重启后 Brew 服务不自启 —— 得加 brew services start --all 到 shell profile,或者干脆用 valet restart 顺手带上 brew services restart mysql。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











