Telegram + PHP (Windows 7): не удалось открыть поток: не удалось выполнить HTTP-запрос! HTTP/1.1 404 Не найден
Я пытаюсь сделать свои первые шаги в Telegram, и я также новичок в PHP ......
Я настроил на своем ПК с Windows 7 Apache 2.4 с PHP 5.6.14 и SSL, и он отлично работает в http и https.
Затем я попытался следовать этому учебнику по Телеграмм-боту 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);
?>
3 answers
Это не проблема PHP, что-то в ваших конфигурациях.
ошибка означает, что файл https://api.telegram.org/<my_bot_token>/getupates
не существует.
API Telegram всегда возвращает что-то в своем теле. В случае ошибки это объект 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, тогда это из-за запущенного веб-крючка
{"ok":false,"error_code":409,"description":"Conflict: can't use getUpdates method while webhook is active"}
Вам следует удалить веб-крючок для вашего API-интерфейса бота с помощью
...../setwebhook без URL-адреса.