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

在XAMPP中使用Laravel API跨项目调用获取错误数据求助

问题分析与解决

核心原因推测

出现这种情况,大概率是Laravel环境变量缓存冲突或虚拟主机/端口配置不匹配导致的:

  1. 项目2中调用的http://mantisui.test/api/css可能实际解析到了项目2自身的服务,而非项目1,因此返回了项目2的APP_NAME值db2。
  2. Laravel会缓存环境变量,若修改.env后未清除缓存,或两个项目的缓存出现混淆,也会导致返回值不符合预期。

解决步骤

1. 确认请求URL的端口正确性

两个项目使用不同端口,你调用的URL必须带上项目1的端口号。比如项目1端口是8000,正确的调用地址应为http://mantisui.test:8000/api/css:

  • 先在浏览器访问带端口的项目1完整URL,确认返回db1,再将该地址替换到项目2的file_get_contents中测试。

2. 清除Laravel环境变量缓存

Laravel会缓存.env内容以提升性能,若未及时清理缓存,会导致旧值残留。在两个项目的根目录分别执行以下命令:

php artisan config:clear
php artisan config:cache
php artisan env
  • config:clear:清除已缓存的配置文件
  • config:cache:重新生成配置缓存
  • env:查看当前应用的环境及APP_NAME,确认项目1显示db1,项目2显示db2。

3. 检查虚拟主机与Hosts配置

打开XAMPP的虚拟主机配置文件(通常路径:xampp/apache/conf/extra/httpd-vhosts.conf),确认项目1的虚拟主机指向正确的文件夹和端口:

<VirtualHost *:8000>
    DocumentRoot "C:/xampp/htdocs/project1/public"
    ServerName mantisui.test
</VirtualHost>

<VirtualHost *:8001>
    DocumentRoot "C:/xampp/htdocs/project2/public"
    ServerName project2.test
</VirtualHost>

同时检查系统Hosts文件(Windows:C:\Windows\System32\drivers\etc\hosts;Linux/macOS:/etc/hosts)的域名解析:

127.0.0.1 mantisui.test
127.0.0.1 project2.test

4. 改用Guzzle调用API(可选,更稳定)

file_get_contents处理HTTP请求能力有限,推荐使用Laravel官方支持的Guzzle库,便于调试和避免隐性问题:
先在项目2安装Guzzle:

composer require guzzlehttp/guzzle

再修改项目2的路由代码:

Route::get('db', function () {
    $client = new \GuzzleHttp\Client();
    $response = $client->get('http://mantisui.test:8000/api/css');
    return $response->getBody()->getContents();
});

内容的提问来源于stack exchange,提问作者003 Ajay kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:53:28