【问题标题】:file_get_contents() "failed to open stream: Network is unreachable" error on valid link有效链接上的file_get_contents()“无法打开流:网络无法访问”错误
【发布时间】:2017-08-19 04:20:44
【问题描述】:

有一个在 php 中使用 Youtube API 的非常简单的示例,在我的情况下不知何故无法工作,我找不到明确的解决方案。

我希望自己使用没有任何包装器的 Youtube API 来获取视频数据。当我尝试通过浏览器(作为链接)从内部访问它时,以下search:list 查询可以完美运行,但是在 php 中,当我尝试相同时会出现该错误。

        $apikey_YT = <my API key>;
        $ytrequrl = "https://www.googleapis.com/youtube/v3/search?".
                "part=snippet".
                "&maxResults=50".
                "&q=doom".
                "&relatedToVideoId=h8j2zj-A5tE".
                "&type=video".
                "&key=${apikey_YT}";

        $result = file_get_contents($ytrequrl);
        var_dump($result);

潜在的问题是 URL 编码,或允许 allow-url-fopen,但在我的情况下似乎都没有帮助:前者实际上给出了一个新的错误消息:No such file or directory

我能做什么?

【问题讨论】:

  • ${apikey_YT}?变量变量?可能想放弃{}
  • @Xorifelse 一种特定于 php 的语法,用于将变量值放入字符串而不用"." 破坏它们 - 我多次测试了字符串本身,它工作正常。但可能值得一试。
  • @Xorifelse 做到了,但没有发生任何变化。
  • 你试过简单的curl请求吗?
  • 还有 Zoltan,这种“特定”语法用于在 PHP 中定义变量变量。要简单地向"string" 添加一个值,您只需执行"$var""{$var['index']}"

标签: php https get youtube-api file-get-contents


【解决方案1】:

像这样试试。可能是你的格式。 这对我有用。

$ytrequrl = 'https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=50&q=doom&relatedToVideoId=h8j2zj-A5tE&type=video&key='.$apikey_YT;

$info= file_get_contents($ytrequrl);
$info= json_decode($info, true);

print("<pre>".print_r($info,true)."</pre>");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2020-10-02
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多