3

次のコードを使用してプロキシ経由でfile_get_contents()を使用してページのソースを取得しようとしています

$aContext = array(
'http' => array(
    'proxy' => 'tcp://proxy.ssn.net:8080',
    'request_fulluri' => true,
),);
$cxContext = stream_context_create($aContext);
$homepage = file_get_contents('http://www.indiaglitz.com/channels/tamil/reviews.asp', False, $cxContext);
echo $homepage;

これは、ターミナルを介してphpファイルを実行すると機能しますが、httpd(Apache 2)を使用してブラウザーを介してファイルを実行すると出力が得られません。

これは、UbuntuにインストールされているApache2で機能しますが、Fedora17にインストールされているhttpdでは機能しません。

間違いはどこにありますか?

4

2 に答える 2

1

これの最も一般的な原因は、SELinuxがhttpdにネットワーク接続を許可しないことです。

これを解決するには、SELinuxブール値を変更する必要があります(これは再起動後も自動的に保持されます)。厳密には必須ではありませんが、httpdを再起動してプロキシワーカーをリセットすることもできます。

setsebool -P httpd_can_network_connect 1

于 2012-10-20T15:36:06.133 に答える
0

つまり、1台のサーバーがubuntuで動作しますが、fedoraサーバーでは動作しないことがわかります。フェドーラサーバーでは、php設定でAllow_url_fopen(file_get_contentsはfopen()を使用)オプションがオフになっている可能性があります。 http://php.net/manual/en/filesystem.configuration.php

しかし!そのセキュリティ設定を変更しないでください。何かをダウンロードしたい場合は、セキュリティホールを開かなくてもcurlがうまく機能します。

于 2012-10-19T14:42:49.597 に答える