2012-05-01 10 views
0

私はプロキシサーバーの背後で2つのLinuxボックスを実行しています。ボックスAIにRHEL 6/PHP 5.3.3RHEL 6のPHP file_get_contents()に関する問題

- のFedora Core 12/PHP 5.3.1

ボックスB - 両方のボックスは、ポート上で801

ボックスAを接続してフィルタリングをバイパスするように設定されていますfile_get_contents()を使用して外部サイトに接続できます。

<?php 
$opts = array(
       'http' => array(
           'proxy' => 'tcp://10.136.132.1:801', 
           'request_fulluri' => true 
          ) 
      ); 

$cxContext = stream_context_set_default($opts); 
echo file_get_contents("http://www.google.com"); 

この結果、Googleのホームページが表示されます。ボックスBに

私は同じコードを実行しますが、このエラーを取得:

Warning: file_get_contents(http://www.google.com): failed to open stream: Permission denied 

両方のボックスが同じネットワーク上にある、同じプロキシサーバーの背後に。ボックスBでfile_get_contentsを動作させるためにApacheやPHPに欠けている設定がありますか?

+0

は何をしますprint_rん($ http_response_header)あなたが言いますか? –

+0

ボックスB $ http_response_headerは未定義の変数です。ボックスAでは、配列内にヘッダ情報を生成しました。この機能を利用するには、何かをオンにする必要がありますか? – amburnside

+0

応答ヘッダーが4xxエラーを示している場合は、PHPの問題ではない可能性があります。 –

答えて

2

bはボックス上の他のウェブサイトを開こう。 rootとしてシェルでこれを実行してみてください:SELinuxのブールの

setsebool -P httpd_can_network_connect on 

詳細情報はここで見つけることができます: http://wiki.centos.org/TipsAndTricks/SelinuxBooleans

+0

これは機能します。 SELinuxは本当に問題でした。ご協力いただきありがとうございますKaivosukeltaja。とても有難い! – amburnside

0

Googleがボットやスクリプトからのように見えるリクエストをブロックしている可能性があります。 ボックスAがGoogleにリクエストするときに追加のヘッダーを設定する可能性があります。

あなたはSELinuxがデフォルトでのApacheで、それ遮断任意の外部への接続を有効にしているようですね

+0

すべてのドメインで同じ – amburnside