【发布时间】:2014-05-21 12:47:47
【问题描述】:
http://westwood-backup.com/podcast?categoryID2=403
这是我想通过 PHP 加载和回显的 XML 文件。我尝试了 file_get_contents 并加载。两者都返回空字符串。如果我将 URL 更改为另一个 XML 文件,则函数效果很好。 URL 有什么特别之处?
<?php
$content = file_get_contents("http://westwood-backup.com/podcast?categoryID2=403");
echo $content;
?>
再次尝试加载,同样的空结果。
<?php
$feed = new DOMDocument();
if (@$feed->load("http://westwood-backup.com/podcast?categoryID2=403")) {
$xpath = new DOMXpath($feed);
$linkPath = $xpath->query("/rss/channel/link");
echo $linkPath
}
?>
【问题讨论】:
-
开启错误报告并在屏幕上显示错误。
error_reporting(E_ALL); ini_set('display_errors', 1);你会看到请求失败。可能他们正在阻止来自某些 http 用户代理的请求。 -
@MichaelBerkowski 对。捕获错误“无法打开流:HTTP 请求失败!”我怎样才能超越这个限制?
-
有趣的是,使用 http 流包装器的
file_get_contents()对我来说立即失败。在 PHP 中使用curl_exec(),它会挂起并且永远不会返回响应。如果我在命令行中使用curl,它会立即返回正确的响应。 -
如果您在 curl 中执行此操作并设置超时 + 用户代理,则它可以工作。请参阅下面的答案。
标签: php xml file-get-contents