Laravel cURL 错误 35:接收失败:HTTP 请求上的连接被对等方重置

问题描述 投票:0回答:1

我在 Laravel 应用程序中遇到问题,其中对外部 API(Telegram Bot API)的 POST 请求失败并出现以下错误:

cURL error 35: Recv failure: Connection reset by peer

我已经设置了一个简单的路由来使用 Laravel 的 Http 客户端触发 Telegram 机器人消息:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;

Route::get('bot', function (Request $request) {
    $url = 'https://api.telegram.org/bot<my-token>/sendMessage';

    Http::connectTimeout(20)->post($url, [
        'chat_id' => '<chat-id>',
        'text' => 'Got a new request!'
    ]);
});

当我使用必要的查询参数手动打开 URL 时,它会按预期工作并将消息发送到 Telegram 聊天。但是,当在 Laravel 中发出请求时,我收到上述 cURL 错误。

我尝试过的:

  1. 检查 URL 和参数:使用查询字符串参数手动访问 URL 工作正常,因此 API URL 是正确的。
  2. SSL 验证:我尝试暂时禁用 SSL 验证:
    Http::withOptions(['verify' => false])
    
    但我仍然遇到同样的错误。
  3. 设置特定的 SSL/TLS 版本:我尝试强制执行 TLS 1.2:
    Http::withOptions(['curl' => [CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2]])
    

我也尝试过使用客户端(GuzzleHttp\Client)。但出现同样的错误..

环境详情:

  • Laravel 版本:11.2
  • Ubuntu 版本:24.04 LTS
  • cURL版本:8.5.0
  • PHP版本:8.3.6
  • Nginx 版本:1.24.0

提前致谢

php laravel ubuntu curl telegram-bot
1个回答
0
投票

已解决:我只需要打开 VPN(因为 Telegram 在我的国家/地区不可用)

© www.soinside.com 2019 - 2024. All rights reserved.