【问题标题】:SimpleXML Redirection Limit Reached已达到 SimpleXML 重定向限制
【发布时间】:2013-01-19 16:18:30
【问题描述】:

我试图在远程服务器上打开一个 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” 在 /home/admin/public_html/art/art.php 第 4 行

致命错误:在非对象上调用成员函数 xpath() /home/admin/public_html/art/art.php 在第 6 行

我的代码是:

<?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));
?>

【问题讨论】:

  • 你从哪里得到这个错误?从连接还是从 simplexml?您是否尝试在浏览器中访问错误的网址?它在那里显示吗?如果没有,请询​​问店主:)。
  • 我在问题中添加了错误消息。
  • 另外,当我从远程服务器复制 XML 文件并将其保存在我的服务器上时,它可以工作。

标签: php simplexml


【解决方案1】:

您看到的错误与 SimpleXML 本身无关,它是 PHP 的透明远程文件访问机制在抱怨。您可以通过使用file_get_contents($url); 创建一个更简单的测试用例来验证这一点[simplexml_load_file($url) 基本上是simplexml_load_string( file_get_contents($url) ) 的简写]

该特定错误消息表明您尝试加载的 URL 正在提供 HTTP 重定向(状态代码 301302)以转发到另一个 URL,然后再转发到另一个 URL,依此类推。要么是一连串的长链,要么是远程服务器配置错误,导致它创建了一个无限循环。

请注意,此类重定向可能取决于请求的属性,因此在浏览器中加载它的行为可能不会完全相同。但是,如果确实如此,您应该能够在 Firebug 等浏览器调试工具的 Net 面板中看到它。

可能的解决方案:

  • 找出最终 URL 应该是什么并请求它,而不是重定向链的开始
  • 请远程服务器的维护人员检查其配置并减少链接重定向的数量
  • 使用 PHP 的 cURL functions 显式获取数据,而不是将 URL 视为文件名;这将使您可以完全控制诸如重定向处理之类的选项,但显然要正确处理有点复杂

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多