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);
?>
Author: Community, 2015-10-26

3 answers

Это не проблема PHP, что-то в ваших конфигурациях. ошибка означает, что файл https://api.telegram.org/<my_bot_token>/getupates не существует.

 2
Author: Rao Lanffy, 2015-10-26 08:38:44

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);
?>
 0
Author: Senshi, 2016-10-16 23:59:31

Я получил ту же ошибку. Вы можете попробовать проверить с помощью JSON, тогда это из-за запущенного веб-крючка

{"ok":false,"error_code":409,"description":"Conflict: can't use getUpdates method while webhook is active"}

Вам следует удалить веб-крючок для вашего API-интерфейса бота с помощью
...../setwebhook без URL-адреса.

 -1
Author: DrFendi Ameen, 2017-08-06 19:20:48