CURL (PHP) 在本地工作,但在远程服务器上不起作用(curl_error #26)

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

我尝试通过 Telegram 机器人发送照片,所以我编写了代码(其中一部分):

$img_path = "https://www.example.com/path/to/file.jpg";
$method = "sendPhoto";
$arrayQuery = array(
    "chat_id" => CHAT_ID,
    "photo" => curl_file_create($img_path, $img_mime, $img_name),
    "caption" => $caption,
    "parse_mode" => "HTML",
    "show_caption_above_media" => True,
);
try {
    $ch = curl_init('https://api.telegram.org/bot'.BOT_TOKEN.'/'.$method);
    if ($ch === false) {
        throw new Exception('failed to initialize');
    }
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $arrayQuery);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $res = curl_exec($ch);
    if ($res === false) {
        throw new Exception(curl_error($ch), curl_errno($ch));
    }
} catch(Exception $e) {
    trigger_error(sprintf(
    'Curl failed with error #%d: %s', $e->getCode(), $e->getMessage()),
    E_USER_ERROR);
} finally {
    if (is_resource($ch)) {
        curl_close($ch);
    }
}

所以这段代码在本地运行良好,但是当我将其上传到远程服务器时,curl 会抛出错误 26。 有人可以帮我解决这个问题吗?

我尝试添加 CURLOPT_SSL_VERIFYHOST false, CURLOPT_SSL_VERIFYPEER false 但没有结果

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

这里的部分问题是,当不支持(并且您不需要)时,您尝试将远程图像作为curl资源打开。

sendPhoto 的 Telegraph 文档

您可以只传递图像 URL,而不是提供本地路径和文件名

所以你需要的是:

$arrayQuery = array(
    "chat_id" => CHAT_ID,
    "photo" => $img_path,
    "caption" => $caption,
    "parse_mode" => "HTML",
    "show_caption_above_media" => True,
);
© www.soinside.com 2019 - 2024. All rights reserved.