Tumblr的XML文件无法加载

5

我基于另一个问题中的代码实现了以下代码:
使用PHP选择特定的Tumblr XML值

function getPhoto($photos, $desiredWidth) {
$currentPhoto = NULL;
$currentDelta = PHP_INT_MAX;
foreach ($photos as $photo) {
    $delta = abs($desiredWidth - $photo['max-width']);
    if ($photo['max-width'] <= $desiredWidth && $delta < $currentDelta) {
        $currentPhoto = $photo;
        $currentDelta = $delta;
    }
}
return $currentPhoto;
}

$request_url = "http://ACCOUNT.tumblr.com/api/read?type=photo&start=0&num=30";
//$request_url = "tumblr.xml";
$xml = simplexml_load_file($request_url);

foreach ($xml->posts->post as $post) {
echo "<div class=\"item\"><a href='".$post['url']."'><img src='".getPhoto($post->{'photo-url'}, 250)."' width=\"250\" /></a></div>"; 
}

这段代码在我开发站点上运行得很好,但是当我将其部署到另一台服务器上时,它无法加载来自Tumblr的外部XML...(在代码中注释掉的本地文本XML可以正常加载)。

我正在等待客户提供帐户凭据,以便我可以联系客户服务并与他们合作...

同时,有没有人知道是什么原因导致这个问题?
服务器设置?
缺少PHP代码?


1
看起来托管环境具有以下设置: allow_url_fopen:OFF allow_url_include:OFFcURL已启用...我有点外行,但通过谷歌,我得出结论,这是一种替代方法来实现相同的事情,但更安全...如何将代码翻译成cURL?谢谢。 - user1828635
1个回答

0

所以,最终我使用cURL加载XML...这是可行的代码:

function getPhoto($photos, $desiredWidth) {
    $currentPhoto = NULL;
    $currentDelta = PHP_INT_MAX;
    foreach ($photos as $photo) {
        $delta = abs($desiredWidth - $photo['max-width']);
        if ($photo['max-width'] <= $desiredWidth && $delta < $currentDelta) {
            $currentPhoto = $photo;
            $currentDelta = $delta;
        }
    }
    return $currentPhoto;
}

$url="http://ACCOUNT.tumblr.com/api/read?type=photo&start=0&num=30";
$ch = curl_init();      
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);    // get the url contents

$data = curl_exec($ch); // execute curl request
curl_close($ch); // close curl request

$xml = new SimpleXMLElement($data);

foreach($xml->posts->post as $post) {
    echo "<div class=\"item\"><a href='".$post['url']."'><img src='".getPhoto($post->{'photo-url'}, 250)."' width=\"250\" /></a></div>"; 
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接