访问youtube api时出错:'警告:file_get_contents()[function.file-get-contents]:URL>文件访问被禁用...'

时间:2012-11-04 13:39:05

标签: php json video youtube

我试图按照这个答案:

https://stackoverflow.com/a/3331372/1063287

所以在我的php文档中我有以下变量:

$json = file_get_contents("https://gdata.youtube.com/feeds/api/videos/{$video_id}?v=2&alt=json");
$json_data = json_decode($json);
$video_title = $json_data->{'entry'}->{'title'};
$video_date = $json_data->{'entry'}->{'published'};
$video_duration = $json_data->{'entry'}->{'media:group'}->{'yt$duration'};
$video_views = $json_data->{'entry'}->{'yt$statistics'}->{'viewCount'};
$video_description = $json_data->{'entry'}->{'content'};

但这给了我错误:

  

警告:file_get_contents()[function.file-get-contents]:URL   在服务器配置中禁用文件访问   第12行/home/path/to//file.php

     

警告:   的file_get_contents(https://gdata.youtube.com/feeds/api/videos/xx-xxxxxxx?v=2&alt=json)   [function.file-get-contents]:无法打开流:没有合适的   包装器可以在第12行的/home/path/to/file.php中找到

我在这里查看了开发人员指南:

https://developers.google.com/youtube/2.0/developers_guide_php

并且可以理解这里的Feed和输入结构:

https://developers.google.com/youtube/2.0/developers_guide_protocol_understanding_video_feeds#Understanding_Video_Entries

并找到了一些解决方案(一个涉及卷曲),但它们要么没有工作,要么我不知道它们是否是最佳使用方法。

有人可以告诉我上述代码是否有任何问题?

2 个答案:

答案 0 :(得分:1)

这很可能是因为您的服务器上没有安装OpenSSL。尝试安装它,如果它仍然不起作用,可能是因为你在php.ini中禁用了HTTP访问(将allow_url_fopen设置为true)

答案 1 :(得分:1)

我看到的最好的事情是Zend Framework中的Zend_GData_Youtube。它不需要任何特殊的东西,但它比普通的cURL或JSON请求容易得多!

请参阅:http://framework.zend.com/downloads/latest