Telegram + PHP (Windows 7): 无法打开流:HTTP 请求失败! HTTP/1.1 404 未找到
Telegram + PHP (Windows 7): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
我正在尝试迈出 Telegram 的第一步,我也是 PHP 的新手......
我已经在我的 Windows 7 电脑上配置了带有 PHP 5.6.14 和 SSL 的 Apache 2.4,它在 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
我在网上搜索了类似的问题,但没有解决:最有趣的回答是这个问题,但我不明白如何根据我的情况调整它。
在其他回复中有使用 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 正文中总是 returns 某些东西。在出现错误的情况下,这是一个 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"}
您应该通过
为您的机器人 API 删除 webhook
...../setwebhook 没有 url.
我正在尝试迈出 Telegram 的第一步,我也是 PHP 的新手......
我已经在我的 Windows 7 电脑上配置了带有 PHP 5.6.14 和 SSL 的 Apache 2.4,它在 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
我在网上搜索了类似的问题,但没有解决:最有趣的回答是这个问题,但我不明白如何根据我的情况调整它。
在其他回复中有使用 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 正文中总是 returns 某些东西。在出现错误的情况下,这是一个 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"}
您应该通过
为您的机器人 API 删除 webhook
...../setwebhook 没有 url.