0

Webページを取得するためにphp file_get_contentsを使用しています。
ローカルホストから実行しているときは、すべてうまくいきます。
しかし、共有ホスティングからそれを行うとすぐに、次のエラーメッセージが表示されます。

エラー
アクセスが拒否
されました セキュリティ ポリシーによりアクセスが拒否されました
ネットワークのセキュリティ ポリシーにより、現時点では要求が許可されません。これが正しくないと思われる場合は、管理者に連絡してください。

これは私が返すヘッダーです

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');

何か案は ?

4

2 に答える 2

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

ブラウザからターゲットにアクセスできる場合は、ブラウザが送信しているすべてのヘッダーを複製してみてください。ほとんどのブラウザには、リクエストでどのヘッダーが送信されるかを正確に表示するための何らかのプラグインがあります。

于 2012-05-12T16:14:31.810 に答える
0

そのため、その Web サーバーはブラウザをチェックし、接続を拒否しました。fsock 関数を試す必要があります。

于 2012-05-12T16:05:26.030 に答える