Php 为什么domdocument load在dev sie上工作,但在生产环境中出现错误?

Php 为什么domdocument load在dev sie上工作,但在生产环境中出现错误?,php,xml,domdocument,Php,Xml,Domdocument,我被难住了。代码完全相同,它们都由相同的机架空间承载。但其中一个工作正常,另一个产生错误: [domdocument.load]:无法打开流:HTTP请求失败 代码相当简单: $doc = new DOMDocument(); $page_url = **valid XML feed** $doc->load($page_url); 所以我不明白是什么导致了这个错误。关于检查什么有什么想法吗 另外:在昨天之前,一切都很正常——所以它一定是昨天实现的补丁中的一个(不幸的是,非常多的补丁)

我被难住了。代码完全相同,它们都由相同的机架空间承载。但其中一个工作正常,另一个产生错误:

[domdocument.load]:无法打开流:HTTP请求失败

代码相当简单:

$doc = new DOMDocument();
$page_url = **valid XML feed**
$doc->load($page_url);
所以我不明白是什么导致了这个错误。关于检查什么有什么想法吗


另外:在昨天之前,一切都很正常——所以它一定是昨天实现的补丁中的一个(不幸的是,非常多的补丁)。只需要知道从哪里开始找


一些调查显示,这是feed的问题(事实上是它的作业API)-切换到另一个作业feed提供商&一切都在运行,仍然不明白为什么它在开发中工作,而不是在生产中工作(除非确实因为某种原因阻止了我们)

可能:

Jonas Due Vesterheden 09-Jun-2009 03:18
我在通过HTTP加载文档时遇到问题。我会得到如下所示的错误:

警告:DOMDocument::load(http://external/document.xml):无法打开流:HTTP请求失败!HTTP/1.1500内部服务器错误

该文档可以在浏览器和wget中很好地加载。问题是,我的系统(OS X和Linux)上的DOMDocument::load()没有发送任何用户代理头,出于某种奇怪的原因,导致Microsoft IIS/6.0响应500错误


如果您使用的是远程提要(不是在每个服务器本地的机器上),那么很可能是由于与allow\u url\u fopen相关的原因。通常,出于安全原因,将文件作为本地资源远程加载会被禁用。

系统上的URL包装器可能会被禁用。请检查PHP ini变量的值
allow\u url\u fopen
?如果它被禁用,将不允许您从URL获取文件

echo ini_get('allow_url_fopen');

好的,我发现了问题:IP地址被api提供程序阻止。无论如何,谢谢你的建议。

你能试试
echo file\u get\u content($page\u url)
看看你是否会从中得到类似的错误?你能从你的工作站在web浏览器中打开DTD url吗?建议使用
echo($page\u url)
进行100%确认。错误中给出了url,它可以正常加载。在dev站点上也可以正常加载-我已经检查了它们是否相同。如果您有控制台(SSH)访问服务器的权限,您可以尝试
wget吗http://path/to/your/url
(其中包含您的URL!)并查看发生了什么情况。虽然可能性不大,但生产/开发方面的差异可能与缓存的DNS条目有关