Я пытаюсь построить бот-телеграмму, но проблема связана с изменением функций PHP из-за более новой версии PHP 5.6.
Ниже приведен основной код, который я нашел, с учетом изменений в php 5.6.
#$filePhoto = curl_file_create($filepath, 'image/jpg', 'heInternet'); //**LINE 39**
$filePhoto = new CURLFile($filepath, 'image/jpg', 'heInternet'); //**LINE 40**
//$texto = $_POST['msg'];
$content = array(
'chat_id' => "@BugTheInternet",
'photo' => $filePhoto
);
//curl required to post
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); // required as of PHP 5.6.0
curl_setopt($ch, CURLOPT_POSTFIELDS, $filePhoto); //**LINE 53**
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //fix http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
Вот ошибка, которую я получаю:
Устарело: curl_setopt (): использование API @filename для файла
загрузка устарела. Пожалуйста, используйте класс CURLFile вместо
C: \ xampp где-то \ somefile.php в строке 53
Когда я изменяю $ content на $ filePhoto в строке 53. Он запускается, и сервер Telegram отправляет сообщения в формате JSON.
Ответ сервера:
"{"ok":false,"error_code":400,"description":"Error: Bad Request: there is no photo in request"}"
Я искал интернет в течение нескольких часов, находя решения. Кстати, два пути, предложенные для PHP 5.6, которые я использую, это в строке 39, 40.
Пожалуйста, помогите мне, если вы столкнулись с этим или иным образом.
благодарю вас.
Вы пытались отправить его хардкор так?
$ch = curl_init("https://api.telegram.org/bot<token>/sendPhoto&chat_id=<chatID>&photo=<path/to/your/image>");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_exec($ch);
curl_close ($ch);
Сначала я использовал POSTFIELDS и другие правильный также для cURL при отправке сообщения, но у меня это не сработает. Так что я hardcored это как пример выше, и это просто сработало.
вы должны удалить
'chat_id' => "@BugTheInternet",
из $ content и добавьте chat_id к URL-адресу curl, потому что
PHP библиотека cURL умирает, возвращая сообщение об ошибке «не удалось создать
забыть данные «при попытке использовать массив, который содержит значение
начиная с ‘@’. Если массив изменяется на строку в URL, закодированную как формат,
проблема не возникает. ссылка: https://bugs.php.net/bug.php?id=50060