2012-05-12 22 views
0

我使用php file_get_contents來獲取網頁。
當我從我的本地主機做的時候,一切正常。
但只要我做到這一點從我的共享主機我收到此錯誤信息:錯誤使用php時訪問被拒絕file_get_content

ERROR
拒絕訪問
訪問的安全策略拒絕
爲您的網絡安全策略可以防止您的請求被允許在這個時候。如果您認爲這不正確,請聯繫您的管理員。

這是標題我回來

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://www.somedomain.com/'); 

,如果我嘗試對當前頁面它工作

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

什麼想法?

+1

您的共享主機是否具有相同的php設置並啓用了fopen url wrappers? –

+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

因此,Web服務器檢查瀏覽器並拒絕您的連接。你應該嘗試使用fsock函數。