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

Laravel Passport生成令牌时遇cURL 28超时错误求助

Laravel Passport 生成令牌时出现cURL超时错误的解决方案

问题分析

你遇到的cURL 28超时错误,本质是应用内部发起HTTP请求调用自身端点时,被服务器并发限制或本地网络解析问题阻塞。比如在XAMPP/Apache环境下,应用本身占用一个连接时,内部请求需要新的连接,若服务器并发数不足就会导致请求超时;或者localhost解析异常,无法正确路由到应用。

解决方案

方案1:直接调用Passport内部逻辑生成令牌(推荐)

不需要通过HTTP请求绕圈,直接用Passport内部服务生成令牌,彻底避免内部请求问题:

替换代码中Http::post的部分为以下内容:

use Laravel\Passport\Client;
use Illuminate\Http\Request;

// ...

// 获取密码授权客户端
$client = Client::find(env('PASSPORT_PASSWORD_CLIENT_ID'));

// 构造内部请求
$request = Request::create(
    '/oauth/token',
    'POST',
    [
        'grant_type' => 'password',
        'client_id' => $client->id,
        'client_secret' => $client->secret,
        'username' => $userData['email'],
        'password' => $userData['password'],
        'scope' => '',
    ]
);

// 让应用直接处理该请求
$response = app()->handle($request);

// 解析令牌数据
$tokenData = json_decode($response->getContent(), true);
$user['token'] = $tokenData;

方案2:修正本地域名解析

将.env文件中的APP_URL从http://localhost:8000改为http://127.0.0.1:8000,避免localhost解析异常导致的请求失败:

APP_URL=http://127.0.0.1:8000

方案3:调整服务器并发设置(针对XAMPP/Apache)

修改Apache配置文件(httpd.conf),提升并发连接能力:

  • 找到MaxRequestWorkers(旧版本为MaxClients),设置为150或更大值
  • 找到MaxRequestsPerChild,设置为0或更大数值
  • 重启Apache服务

方案4:避免使用php artisan serve

php artisan serve是单线程运行,内部请求会被阻塞超时。改用XAMPP/Apache或Nginx运行应用即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:05:11