You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Homestead环境下Laravel调用宿主机PrestaShop API报404错误求助

解决Homestead环境下Laravel调用宿主机PrestaShop API的404问题

问题分析

你当前的核心问题是:Homestead虚拟机内的Laravel通过IP直接调用宿主机PrestaShop API时返回404,但宿主机用Postman请求正常。这大概率是虚拟主机域名匹配或请求头缺失导致的。

排查与解决步骤

1. 改用域名代替IP发起请求

宿主机的Apache虚拟主机通常是绑定prestashop.test域名的,直接用IP访问时,Apache无法识别对应的站点根目录,因此返回404。修改你的curl URL为域名形式:

$curlOptUrl = 'http://prestashop.test/api/addresses/3';

你已在Homestead的/etc/hosts配置了10.0.2.2 prestashop.test,请求会自动解析到宿主机IP,同时携带正确的Host头匹配虚拟主机配置。

2. 若必须用IP访问,手动添加Host请求头

如果业务场景要求用IP访问,需在curl的HTTP头中强制指定Host字段,让宿主机Apache识别对应虚拟主机:

curl_setopt_array($curl, array(
    // 其他配置...
    CURLOPT_HTTPHEADER => array(
        'Authorization: Basic '.$this->apiKey,
        'Host: prestashop.test' // 新增该字段
    ),
));

3. 验证Homestead网络连通性

在Homestead虚拟机内执行以下命令,排查网络和请求是否正常:

  • 解析验证:ping prestashop.test,确认能解析到10.0.2.2且无丢包
  • 手动请求验证:
curl -v http://prestashop.test/api/addresses/3 -H "Authorization: Basic YOUR_BASE64_API_KEY"

查看输出日志,确认请求是否正确到达宿主机,以及响应状态码和内容。

4. 检查宿主机PrestaShop API配置

  • 登录宿主机PrestaShop后台,进入高级参数 > Web服务,确认API模块已启用,且你的密钥拥有地址相关的访问权限
  • 在宿主机浏览器直接访问http://prestashop.test/api/addresses/3(需携带API密钥),确认API本身能正常返回数据

5. 确认端口映射是否正确

如果宿主机PrestaShop未使用默认80端口,需在URL中添加对应端口,例如:

$curlOptUrl = 'http://prestashop.test:8080/api/addresses/3';

同时检查Homestead虚拟机的防火墙规则,确保对应端口的请求未被拦截。

内容的提问来源于stack exchange,提问作者Luigi Iaderosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:55:55