Vagrant Homestead中Laravel项目调用同环境API遇cURL域名解析错误求助
解决Homestead环境下跨项目域名解析失败的问题
这个问题我之前在Homestead环境里踩过坑!核心原因是你的Vagrant虚拟机内部没有配置test-api.local的域名解析——咱们本地浏览器能访问是因为自己电脑的hosts文件加了映射,但虚拟机里的系统根本不知道这个域名指向哪儿,自然就抛出Could not resolve host的错误了。
下面给你几个可行的解决方案,按优雅程度排序:
1. 配置Homestead自动同步域名(推荐)
这种方式一劳永逸,以后新增项目也不用手动改hosts:
- 打开本地的
Homestead.yaml配置文件 - 确认
sites区块里两个项目的映射都正确,然后在hosts字段里把两个域名都列进去:sites: - map: test-api.local to: /home/vagrant/code/test-api/public - map: test-another.local to: /home/vagrant/code/test-another/public hosts: - test-api.local - test-another.local - 保存文件后,在终端执行
vagrant provision命令,Homestead会自动把这些域名添加到虚拟机内部的hosts文件里
2. 手动修改虚拟机内部的hosts文件
如果不想重新provision虚拟机,可以直接登录到虚拟机里修改:
- 终端执行
vagrant ssh进入Homestead虚拟机 - 编辑hosts文件:
sudo nano /etc/hosts - 在文件末尾添加一行:
127.0.0.1 test-api.local(因为两个项目都在同一个虚拟机内,指向本地回环地址即可) - 按
Ctrl+O保存,Ctrl+X退出编辑器
3. 临时方案:用虚拟机IP代替域名
如果只是临时测试,不想改配置,可以直接用Homestead默认的IP(通常是192.168.10.10)替换域名:
$this->client = new Client(['verify' => false]); $d = $this->client->get("https://192.168.10.10/"); return $d;
不过这个方案不够直观,长期用还是推荐前两种方法。
验证方法
修改完成后,先在虚拟机里执行ping test-api.local,如果能看到解析到127.0.0.1或者192.168.10.10,说明配置生效了,此时再请求test-another.local应该就能正常调用API了。
内容的提问来源于stack exchange,提问作者Nika Kurashvili
相关产品推荐
相关产品推荐

