2012-05-12 2 views
0

웹 페이지를 가져 오는 데 PHP file_get_contents을 사용하고 있습니다.
내 localhost에서 모든 일을 잘하고 있습니다.
그러나 최대한 빨리에서 그것을 할 나의 공유 나는이 오류 메시지가 얻을 호스팅 :PHP file_get_content를 사용할 때 액세스가 거부되었습니다.

오류를
액세스 거부
보안 정책에 의해 거부 액세스
네트워크에 대한 보안 정책이되지 않도록 요청이 방지 현재 허용됩니다. 이것이 잘못되었다고 생각되면 관리자에게 문의하십시오.

이 헤더는 내가 돌아올입니다

array(4) { [0]=> string(22) "HTTP/1.0 403 Forbidden" [1]=> string(23) 
"Content-Type: text/html" [2]=> string(17) "Connection: close" [3]=> string(19) 
"Content-Length: 353" } 

내가 그것을

$page = file_get_contents('http://stackoverflow.com/questions/10565054/error-access-denied-when-using-php-file-get-content'); 

어떤 아이디어를 작동 현재 페이지하려고하면 코드가

$page = file_get_contents('http://www.somedomain.com/'); 

간단하다?

+1

공유 호스트가 동일한 PHP 설정을 갖고 있고 fopen URL 래퍼가 활성화되어 있습니까? –

+0

다른 도메인에서 읽을 때 작동합니다 – yossi

+1

공유 호스트에서'allow_url_fopen'이 비활성화되어 있는지 확인하십시오. 문제가 원인이라고 추측합니다. –

답변

4

원격 웹 서버가 요청을 거부합니다. 왜 그것이 당신을 부인하는지 명확하게 말하지 않습니다. 서버가 공유 호스팅이있는 곳을 포함하는 IP 범위를 거부하도록 서버를 구성 할 수 있습니다. 서버가 특정 헤더 정보 (예 : 호스트 항목 또는 특정 user_agent 등)를 필요로 할 수 있습니다. 연락하려는 서버를 진정시킬 수 있도록 일부 HTTP 컨텍스트 항목을 설정하십시오. 다음은 file_get_contents 페이지의 예입니다.

function file_get_contents_utf8($fn) { 
    $opts = array( 
     'http' => array( 
      'method'=>"GET", 
      'header'=>"Content-Type: text/html; charset=utf-8" 
     ) 
    ); 

    $context = stream_context_create($opts); 
    $result = @file_get_contents($fn,false,$context); 
    return $result; 
} 

브라우저에서 대상에 액세스 할 수있는 경우 브라우저가 보내는 헤더를 모두 복사 해보십시오. 대부분의 브라우저에는 요청시 어떤 헤더가 나오는지 정확히 알려주는 플러그인이 있습니다.

+0

나는 이것을 시도했지만 도움이되지 않았다, 나는 어떤 헤더도 설정하지 않고 VPS에서 시도했지만 작동했다. 나는 내 공유 호스트 IP가 내가 읽으려는 도메인에서 거부 당하고 있다고 생각하고있다. – yossi

+0

... 또는 목적지에 도착하는 데 방해가되는 프록시가 있습니다. – Tremmors

0

웹 서버가 브라우저를 확인하고 연결을 거부했습니다. fsock 함수를 사용해보십시오.

관련 문제