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

时间:2017-04-11 07:57:10

标签: php curl telegram-bot php-telegram-bot

我只想向电报机器人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;
}

返回:

cURL Error #:SSL certificate problem: self signed certificate

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

4 个答案:

答案 0 :(得分:1)

我有同样的问题,可以通过将文件 cacert.pem 复制到我的服务器中,然后将cacert文件的路径插入我的PHP脚本中来解决。就我而言,我将文件cacert放入Web服务器的驱动器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

答案 1 :(得分:0)

电报webhook只能与​​ssl合作。你可以简单地使用cloudflare free 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"];
?>

答案 2 :(得分:0)

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

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

希望它有所帮助。

答案 3 :(得分:0)

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

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

对于您的问题我认为您使用的是非常古老的卷曲库,从here获取最新的cacert文件并将其替换为旧文件。如果您使用的是xampp,请点击this链接获取更多信息