Laravel Valet:pugito项目返回404 Not Found,新项目可正常访问
问题描述
我在使用Laravel Valet时遇到了一个问题:现有Laravel项目"pugito",已经执行了valet park和valet link操作,但访问pugito.test时始终返回"404 - Not Found"错误。
具体情况
- 已在macOS上成功用Valet运行其他项目
- 创建"pugito"目录后,按相同步骤执行
valet park和valet link,但访问域名时404 - 新建测试目录"aheer"并放入简单
index.php,执行相同Valet操作后,aheer.test可正常访问
已尝试的解决步骤
- 确认"pugito"项目文件完整、Valet处于运行状态(
valet start),其他项目正常服务 - 删除重建"pugito"项目,重新执行
valet park/valet link,对比/usr/local/etc/nginx/sites下"pugito"和"aheer"的Nginx配置文件,未发现差异 - 用
valet use切换PHP版本(7.3、7.4、8.2),问题依旧
环境信息
- macOS Monterey 12.6.1
- Laravel Valet 4.3.0
求助需求
- 为何"pugito"项目返回404,而其他同步骤项目正常?
- 具体的故障排查步骤有哪些?
- 如何让Valet正确识别并服务"pugito"项目?
排查与解决建议
一、确认项目入口文件路径
Valet默认指向Laravel项目根目录下的public文件夹,如果你的"pugito"项目public目录缺失、路径错误,或者index.php损坏,就会触发404:
- 检查
pugito目录下是否存在public文件夹,且内部有完整的index.php文件 - 如果项目结构特殊(入口文件在根目录),可以在项目根目录创建
ValetDriver.php自定义入口规则:
<?php class ValetDriver extends LaravelValetDriver { public function serves($sitePath, $siteName, $uri) { return true; } public function isStaticFile($sitePath, $siteName, $uri) { if (file_exists($staticFilePath = $sitePath.$uri)) { return $staticFilePath; } return false; } public function frontControllerPath($sitePath, $siteName, $uri) { return $sitePath.'/index.php'; } }
二、清理Valet缓存与DNS记录
- 执行
valet forget移除"pugito"的park记录,再重新执行valet park - 清除本地DNS缓存:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - 检查
/etc/hosts文件,确认没有pugito.test的错误解析条目
三、验证Nginx配置与日志
- 手动检查
/usr/local/etc/nginx/sites/pugito.test配置文件中的root字段,确认路径指向pugito/public目录 - 查看Nginx错误日志定位问题:
tail -f /usr/local/var/log/nginx/error.log,访问pugito.test时观察日志中的具体报错(比如路径不存在、权限不足)
四、修复项目目录权限
macOS下目录权限异常可能导致Valet无法读取文件:
- 给项目目录设置基础权限:
chmod -R 755 pugito - 统一目录所属用户:
chown -R $(whoami):staff pugito
五、重置Valet环境
如果以上步骤无效,可重置Valet彻底修复:
- 执行
valet stop停止服务 - 执行
valet uninstall卸载Valet - 重新执行
valet install安装配置 - 重新
valet park你的项目目录
内容的提问来源于stack exchange,提问作者Hassan Shahzad Aheer
相关产品推荐
相关产品推荐

