我有一个cronjob,可以从不同的URL下载不同的文件并修改数据。好奇的是,一切都运作良好,现在我想再添加两个URL,但是这些URL我有一些问题......
但我不知道为什么......所有网址(8)都使用相同的功能。但只有2个新网址引发了这个错误。我不允许在此提供网址,但我可以说我可以在Chrome浏览器中下载这两个网址。
我使用DOM加载一个URL:
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):无法打开流:HTTP 请求失败! HTTP / 1.1 403禁止
DOMDocument :: load():I / O警告:无法加载外部实体 ...
其他网址加载了fopen:
function fetchCsvDocument($url, $output){
return file_put_contents($output, fopen($url, 'r'));
}
我收到此错误:
的fopen(http://myurl.de): 无法打开流:HTTP请求失败! HTTP / 1.1 503服务 暂时不可用
有人知道如何修复此错误吗? 我只是不知道为什么我可以使用浏览器下载URL,但PHP告诉我403或甚至503。
我使用这些功能下载的其他文件和修改不会引发此错误......?
问候,谢谢!
答案 0 :(得分:0)
403 Forbidden:
服务器很可能检测到请求不是来自浏览器(并且可能不喜欢)和/或服务器想要一些会话状态(浏览器发送,但您的代码可能不是)。
要查看在浏览器和服务器之间发送的内容,请在Chrome中按F12并选择“网络”,然后点击链接以查看HTTP标头。
503服务暂时不可用可能是相同的原因(如果该网址也可以在浏览器中使用)。
同时检查http与https。
另一个原因可能是网址不正确encoded(即用%20
替换空格)浏览器会自动执行此操作