Я пытаюсь перенести свои первые шаги в Telegram, и я также новичок в PHP ……
Я настроил на своем компьютере с Windows 7 Apache 2.4 с PHP 5.6.14 и SSL, и он отлично работает в http и https.
Затем я попытался следовать этому уроку Telegram Bot. https://www.youtube.com/watch?v=hJBYojK7DO4. Все работает нормально, пока мне не нужно создать простую PHP-программу, подобную этой
<?php
$botToken = "<my_bot_token>";
$website = "https://api.telegram.org/bot".$botToken;
$update = file_get_contents($website."/getUpates");
print_r($update);
?>
Когда я пытаюсь вставить в свой браузер
https://localhost/Telegram/MyYouTubeTutorialBot/YouTubeTutorialBot.php
ответ
Warning: file_get_contents(https://api.telegram.org/<my_bot_token>/getupates): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in <my_php_file_location> on line 6
Я искал в Интернете похожие проблемы, но ничего не решил: самый интересный ответ на этот вопрос file_get_contents — не удалось открыть поток: ошибка HTTP-запроса! HTTP / 1.1 404 не найден но я не понимаю, как адаптировать его к моему делу.
В других ответах есть предложение использовать curl, но я бы хотел решить функцию продолжения file_get_contents.
Я думаю, что это не проблема PHP, но что-то в моей конфигурации где-то … но я не знаю, где
Какие-либо предложения?
заранее большое спасибо
Чезаре
ПРИМЕЧАНИЕ ДОБАВЛЕНО
В моем исходном коде была ошибка правописания опечатки, как @aeryaguzov предлагает в комментариях ….
Здесь вы исправили код, который работает прямо сейчас …
<?php
$botToken = "<my_bot_token>";
$website = "https://api.telegram.org/bot".$botToken;
$update = file_get_contents($website."/getUpdates");
print_r($update);
?>
Это не проблема PHP что-то в ваших конфигурациях.
ошибка означает, что файл https://api.telegram.org/<my_bot_token>/getupates
не существует.
Telegram API всегда возвращается что-то в его теле. В случае ошибки это объект JSON с ok
установлен в false
, error_code
и description
поле. Тем не менее, он также устанавливает заголовок ответа на соответствующий код ошибки, вызывая file_get_content()
выдать ошибку вместо того, чтобы вернуть все еще очень полезное тело. Чтобы обойти это, вы можете добавить потоковый контекст следующим образом:
<?php
$stream_context = stream_context_create(array(
'http' => array (
'ignore_errors' => true
)
));
$botToken = "<my_bot_token>";
$website = "https://api.telegram.org/bot".$botToken;
$update = file_get_contents($website."/getUpdates", false, $stream_context);
print_r($update);
?>
Я получил ту же ошибку. Вы можете попробовать проверить с помощью JSON, тогда это из-за того, что работает webhook
{"ok":false,"error_code":409,"description":"Conflict: can't use getUpdates method while webhook is active"}
Вы должны удалить webhook для вашего бота API
…../ setwebhook без URL.