我有一个cronjob从不同的URL下载不同的文件并修改数据。古怪的事情是,一切运作良好,现在我想添加两个网址,但与这些网址我有一些问题...无法打开流 - DOM和File_Put_Contents
但我只是没有为什么...所有网址(8)使用相同的功能。但只有2个新的URL会引发这个错误。我不允许在此处提供网址,但我可以说,我可以在Chrome浏览器中下载这两个网址。
我打开一个URL与DOM:
function fetchXmlDocument($url, $output, $dom = null){
if (!$dom instanceof DOMDocument) {
$dom = new DOMDocument('1.0', 'utf-8');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
}
$dom->load($url);
$dom->save($output);
return $dom;
}
在这里,我得到这个错误:
DOMDocument::load(http://myurl.de): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
DOMDocument::load(): I/O warning : failed to load external entity ...
另一个URL加载的fopen:
function fetchCsvDocument($url, $output){
return file_put_contents($output, fopen($url, 'r'));
}
在这里,我得到此错误:
fopen(http://myurl.de): failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable
有人知道我该如何解决这个错误? 我只是不明白为什么我可以用我的浏览器下载URL,但PHP告诉我403甚至503.
我用这些函数下载的其他文件和修改不会引发这个错误...?
问候和谢谢你!
我建议使用['libxml_set_streams_context'](http://php.net/manual/ en/function.libxml-set-streams-context.php)来设置用户代理。如果不起作用,请尝试使用提供更多选项并返回更多信息的'cURL'加载文件。有关[http状态代码]的更多信息(https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) –