如何修复curl_error:SSL:没有备用证书使用者名称与目标主机名匹配'api.telegram.org'



我正在使用telegram.php来连接我的机器人。当我使用sendmessage我的日志中一切都很好,但我没有从机器人收到任何内容。

当我检查我的日志时,出现这样的问题:

ok:         False
curl_error_code:        51
curl_error:     SSL: no alternative certificate subject name matches target host name 'api.telegram.org'

我不知道该怎么做才能解决它。

我不知道

这个电报机器人,但我看到它使用 GuzzleHttp。在初始化期间,它不接受任何配置Request::initialize()

public static function initialize(Telegram $telegram)
{
    if (!($telegram instanceof Telegram)) {
        throw new TelegramException('Invalid Telegram pointer!');
    }
    self::$telegram = $telegram;
    self::setClient(new Client(['base_uri' => self::$api_base_uri]));
}

您应该检查其文档。我看到有很多二传手可以覆盖默认设置。

您需要在客户端配置中设置要false GuzzleHttpRequestOptions::VERIFY

$this->client = new GuzzleHttpClient([
    'base_uri'                          => 'someAccessPoint',
    GuzzleHttpRequestOptions::HEADERS => [
        'User-Agent' => 'some-special-agent',
    ],
    'defaults'                          => [
        GuzzleHttpRequestOptions::CONNECT_TIMEOUT => 5,
        GuzzleHttpRequestOptions::ALLOW_REDIRECTS => true,
    ],
    GuzzleHttpRequestOptions::VERIFY  => false,
]);

要解决此问题,请将此 URL 复制到浏览器并设置 webhook:

https://api.telegram.org/botTOKEN/setWebhook?url=https://yourwebsite.com
<小时 />

错误的解决方案 2让我们按照以下简单步骤操作:

下载此根证书捆绑包:https://curl.haxx.se/ca/cacert.pem放入服务器的任何位置。打开 php.ini 并添加以下行:

curl.cainfo = "[the_location]cacert.pem"

重新启动网络服务器。就是这样。🙂

相关内容

最新更新