2017-03-11 11 views
1

다른 URL에서 다른 파일을 다운로드하고 데이터를 수정하는 cronjob이 있습니다. 골동품 문제는 모든 것이 잘 작동하고 이제는 URL을 두 개 더 추가하려고했지만 URL에 문제가있는 것입니다 ...스트림 열지 못했습니다 - DOM 및 File_Put_Contents

하지만 이유가 없습니다 ... 모든 URL (8)은 동일한 기능을 사용합니다 . 그러나 2 개의 새 URL 만 오류를 던지고 있습니다. 여기에 URL을 제공 할 수 없지만 Chrome 브라우저에서 두 URL을 모두 다운로드 할 수 있다고 말할 수 있습니다.

나는 DOM 하나 개의 URL을로드 : 내가 얻을 여기

function fetchCsvDocument($url, $output){ 
    return file_put_contents($output, fopen($url, 'r')); 
} 

:

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 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; 
} 

나는이 오류 이 오류 :

fopen(http://myurl.de): failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable

누군가이 오류를 해결할 수있는 방법을 알고 있습니까? 브라우저로 URL을 다운로드 할 수있는 이유를 알 수 없지만 PHP가 403 또는 심지어 503이라고 알려줍니다.

그 기능을 사용하여 다운로드하고 수정 한 다른 파일은이 오류를 발생시키지 않습니다 ... ...?

안녕하세요. 감사합니다.

+0

을 수행하는 내가 사용하는 것이 좋습니다 ['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)에 대한 추가 정보 –

답변

0

403 금지 :

서버는 대부분의 요청이 브라우저에서 오지 않는다 (그리고 어쩌면 좋아하지 않는다) 및/또는 서버가 브라우저가 보내는 몇 가지 세션 상태를 (원하는 것을 감지하지만, 아마 당신의 코드는 아닙니다).

브라우저와 서버간에 전송되는 내용을 보려면 크롬에서 F12를 누르고 네트워크를 선택한 다음 링크를 클릭하여 HTTP 헤더를 확인하십시오.

503 일시적으로 사용할 수없는 서비스가 동일한 이유 일 수 있습니다 (해당 URL이 브라우저에서도 작동하는 경우).

또한 http 대 https를 확인하십시오.

또 다른 이유는 URL이 아니라고 할 수 제대로 encoded (즉, %20 공간을 대체) 브라우저가 자동으로