将Laravel应用从Homestead迁移至Valet后路由异常求助
我之前从Homestead迁到Valet时也踩过类似的坑,给你几个实际有效的排查方向:
确认Valet站点配置正确
别漏了最基础的一步:要么在项目根目录执行valet link给站点绑定专属域名,要么把项目目录放到Valet的默认park目录(一般是~/Sites)并执行valet park。可以用valet links查看已绑定的站点,valet parked查看已加入的park目录,确保你的项目在列表里。检查Valet服务状态
执行valet status看看nginx、php-fpm、dnsmasq这几个核心服务是不是都处于running状态。如果有服务未启动,先执行valet restart重启所有服务,要是某个服务还是起不来,比如nginx,可能是端口被占用(比如Homestead没彻底关掉),可以手动杀掉占用80端口的进程:sudo lsof -ti:80 | xargs kill -9,再重启nginx。清理DNS缓存与验证解析
有时候旧的DNS缓存会干扰Valet的域名解析,Mac上执行sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder清除缓存,然后用ping your-project.test(替换成你的站点域名)测试,正常应该解析到127.0.0.1。如果解析不对,试试重新安装dnsmasq:valet uninstall && valet install。彻底关停Homestead避免冲突
哪怕你执行了vagrant reload --provision,Homestead虚拟机可能还在后台占用80/443端口,直接执行vagrant halt彻底关掉虚拟机,再重启Valet,避免端口冲突导致nginx无法正常监听请求。检查项目配置与权限
- 打开项目的
.env文件,确保APP_URL设置为Valet的域名(比如http://your-project.test),然后执行php artisan config:clear && php artisan cache:clear清除Laravel缓存; - 确认项目的
public目录权限正常,Mac上可以执行chmod -R 755 public,保证nginx能读取该目录下的文件。
- 打开项目的
重置Valet兜底方案
如果以上步骤都没解决问题,试试重置Valet的全部配置:valet reset,之后重新执行valet install,再重新绑定或park你的项目,大部分残留配置问题都能通过这步解决。
内容的提问来源于stack exchange,提问作者Edvard Åkerberg

