所以我对YouTube API Feed有疑问。
在我们的实时网站上,它不会打印Feed的数据,但是当我访问我们的开发人员服务器时,所有内容都会正确打印。
以下是一个基本测试页面:http://www.fleetistics.com/videos/test.php
我一无所获。
以下是我应该看到的片段:
SimpleXMLElement Object
(
[id] => tag:youtube.com,2008:video:wzE9T5iy00Y
[published] => 2013-03-25T19:13:32.000Z
[updated] => 2013-06-05T13:29:37.000Z
[category] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[scheme] => http://schemas.google.com/g/2005#kind
[term] => http://gdata.youtube.com/schemas/2007#video
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[scheme] => http://gdata.youtube.com/schemas/2007/categories.cat
[term] => Autos
[label] => Autos & Vehicles
)
)
)
[title] => GPS Tracker Used by Action Lock and Safe
[content] => SimpleXMLElement Object
(
[@attributes] => Array
(
[type] => application/x-shockwave-flash
[src] => https://www.youtube.com/v/wzE9T5iy00Y?version=3&f=videos&app=youtube_gdata
)
)
以下是我在test.php页面上使用的代码:
<?php
$entryURL = 'https://gdata.youtube.com/feeds/api/videos/wzE9T5iy00Y?v=2';
$feed = simplexml_load_file($entryURL);
?>
<pre><?php print_r($feed); ?></pre>
这个基本示例仅使用“视频”Feed,但我对所有Feed都遇到了同样的问题。
现在这些Feed在周五正常运行,所以当时和现在之间发生了一些事情。
我已经排除了它可能是一个编程错误,因为在我提供的示例中,我取出了所有内容并且只留下了最低限度。加上相同的代码在开发服务器上运行良好。
我不认为这是YouTube API,因为我没有看到任何重大公告,而且我看到的其他提要工作正常。
因此,让我相信这是我的网站或我的帐户的问题。我得到的印象是我的帐户,因为我的网站上使用其他应用程序的其他供稿正常工作。
我该如何解决这个问题,或者对此进行进一步的排查以便我能解决它?
答案 0 :(得分:1)
这听起来(并且看起来)可疑,因为php标志allow_url_fopen
已在您的生产服务器上关闭。如果您有权访问php.ini文件,则可以检查该标志(它需要打开以允许simplexml_load_file加载远程数据)。如果它是您没有该访问权限的托管环境,您可以通过编写如下例程来检查:
if( ini_get('allow_url_fopen') ) {
echo "it's on!";
}
else {
echo "it's off!";
}
如果这是问题,并且您无权重新打开它,则可以改为使用curl:
function curl_get_contents ($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
$entryURL = 'https://gdata.youtube.com/feeds/api/videos/wzE9T5iy00Y?v=2';
$feed = simplexml_load_file(curl_get_contents($entryURL));
如果这不是问题,请检查日志以查看simplexml_load_file是否引发任何错误。