php curl 中电报机器人的自签名证书

self signed certificate for telegram bot in php curl

我只想向电报机器人 API 发送一个简单的请求我的代码是:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.telegram.org/bot332537240:MY_TOKEN/getUpdates",
  CURLOPT_CUSTOMREQUEST => "POST",
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

returns:

cURL Error #:SSL certificate problem: self signed certificate

我不想使用任何 ssl。我不会为电报设置任何 webhook。这是一个简单的请求,我没能处理好。请帮助我

telegram webhook 仅适用于 ssl。您可以简单地使用 cloudflare 免费 ssl。 但它不适用于 .ir 域。 您可以更轻松地获得更新。

<?php 

date_default_timezone_set("Europe/Berlin");
define('BOT_TOKEN', 'yourtoken');

define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
//get update
$content = file_get_contents("php://input");

//json array
$update = json_decode($content, true);
//chatid
$chatID = $update["message"]["chat"]["id"];
?>

您可以使用 CURLOPT_SSL_VERIFYPEER 并在 curl_setopt_array 中将其设置为 false。

CURLOPT_SSL_VERIFYPEER 停止 cURL 验证对等方的 SSL 证书。

希望对您有所帮助。

如果您想使用方法并全面了解电报机器人的工作原理,只需将 url 放入浏览器并查看结果。

https://api.telegram.org/bot<token>/METHOD_NAME

对于你的问题,我认为你使用的是非常旧的 curl 库,从 here and replace it with the old one. if you are using xampp follow this link 获取最新的 cacert 文件以获取更多信息

我有同样的问题,可以通过将文件 cacert.pem 复制到我的服务器然后将 cacert 文件的路径插入我的 PHP 来解决脚本。在我的例子中,我将文件 cacert 放入我的网络服务器的驱动器 C,然后将此脚本插入我的 PHP 文件:

CURLOPT_CAINFO => "C:\cacert.pem"

所以你的 PHP 脚本应该是这样的:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.telegram.org/bot332537240:MY_TOKEN/getUpdates",
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_CAINFO => "C:\cacert.pem",
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

您可以从以下网址下载文件 cacert.pem

https://drive.google.com/open?id=1FCLH88MpKNLDXZg3pJUSAZ0BbUbNmBR2

如果你还是一头雾水,可以在我的youtube上看我完整的教程视频:

https://youtu.be/UNERvcCz-Hw