我正在尝试在远程服务器上打开XML文件,但是我收到一条错误消息,指出已达到重定向限制。我无法控制遥控器,所以有没有办法可以增加限制?或者,我应该与拥有服务器的人交谈,看看他们能做什么?
这是错误:
警告: 使用simplexml_load_file(http://www.server.com/search/music.xml?key=key&type=songs&p1=All%20Things%20New&p2=Elevation%20Worship) [function.simplexml-load-file]:无法打开流:重定向 达到限制,在/home/admin/public_html/art/art.php上中止 第4行
警告:simplexml_load_file()[function.simplexml-load-file]:I / O 警告:无法加载外部实体 “http://www.server.com/search/music.xml?key=key&type=songs&p1=All%20Things%20New&p2=Elevation%20Worship” 在第4行的/home/admin/public_html/art/art.php中
致命错误:在非对象中调用成员函数xpath() 第6行/home/admin/public_html/art/art.php
我的代码是:
<?php
function errorHandler($n, $m, $f, $l) {
header('Location: blank.png');
}
set_error_handler('errorHandler');
$url = 'http://REMOTESERVER/search/music.xml?key=KEY&type=songs&p1=' . htmlspecialchars($_GET["track"]) . '&p2=' . htmlspecialchars($_GET["artist"]) . '';
$xml = simplexml_load_file($url);
$img = $xml->xpath('//image200');
$large = (string)$img[0];
header("Location:".urldecode($large));
?>
答案 0 :(得分:0)
您所看到的错误与SimpleXML无关,它是PHP的透明远程文件访问机制,它正在抱怨。您可以使用file_get_contents($url);
创建更简单的测试用例来验证这一点[simplexml_load_file($url)
基本上是simplexml_load_string( file_get_contents($url) )
的简写
该特定错误消息表明您尝试加载的URL正在提供HTTP重定向(状态代码301
,302
)以转发到另一个URL,然后转发到另一个URL,并且等等。要么存在长链,要么远程服务器配置错误,这样就会产生无限循环。
请注意,此类重定向可能取决于请求的属性,因此在浏览器中加载它可能行为不一样。但是,如果确实如此,您应该能够在Firebug等浏览器调试工具的Net面板中看到它。
可能的解决方案: