Как исправить 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'
Я не знаю, что делать, чтобы это исправить.
0 ответов
Я не знаю этого бота для телеграмм, но вижу, что он использует 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]));
}
вам следует проверить его документацию. Я вижу, что есть много сеттеров, которые позволяют перезаписывать настройки по умолчанию.
Что вам нужно, так это установить \GuzzleHttp\RequestOptions::VERIFY
к false
в конфиге клиента:
$this->client = new \GuzzleHttp\Client([
'base_uri' => 'someAccessPoint',
\GuzzleHttp\RequestOptions::HEADERS => [
'User-Agent' => 'some-special-agent',
],
'defaults' => [
\GuzzleHttp\RequestOptions::CONNECT_TIMEOUT => 5,
\GuzzleHttp\RequestOptions::ALLOW_REDIRECTS => true,
],
\GuzzleHttp\RequestOptions::VERIFY => false,
]);
Чтобы решить эту проблему, скопируйте этот URL-адрес в браузер и установите веб-перехватчик:
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"
Перезагрузите ваш веб-сервер. Вот и все.