2017-02-23 7 views
0

CentOSでphp-5.6.30とApache 2.2.15を使用しています。私はそれが好きでアクセスしていますが

$uri = trim(urldecode($_REQUEST['uri'])); 
$validate_content = @file_get_contents($uri); 
echo $validate_content; 

http://10.20.30.40:8001/index.html?uri=「HERE URL」 を私はhttp://www.example.comそれが働いている罰金のようなURLを使用していますたびに、私はこのコードを使用しています。しかし、私がhttp://127.0.0.1:8000/App/app.htmlまたはhttp://10.10.10.40:9000/App/app.htmlのようなURLを使用するたびに、それはbool(false)を返しています。

Windows WampServer(Apache 2.4.18 - PHP 5.6.19 - MySQL 5.7.11)で同じコード(上記のコード)を実行してアクセスしているとき。それは正常に動作しています。しかし、私はそれが動作しないCentOSに(Apacheの2.2.15、PHP-5.6.17-3(CLI)と同じコードを使用していたとき。

答えて

0

$クエリ= http_build_query(urldecode($ _ REQUEST [ 'URL']));

ともあなたは、PHP iniファイルでallow_url_fopenを確認することができます

か、また、カールの代わりのfile_get_contents

+0

が動作していません。 allow_url_fopen = ON、既にチェックされています。 –

0
を使用したCA。

それは、SELinuxの設定fまたはhttpdはいくつかのアウトバウンド接続を禁止します。次の設定をチェックしてみてください。

$ getsebool httpd_can_network_connect 
httpd_can_network_connect --> off 

それがオフに設定されている場合は、それを有効にしてみてください:

$ sudo setsebool -P httpd_can_network_connect on 
$ getsebool httpd_can_network_connect 
httpd_can_network_connect --> on 

今すぐあなたのhttpdサーバが発信接続を行うことができるはずです。私はなぜそれが既にhttp://www.example.comに接続できるのか正確にはわからないが、ローカルホストではないが、これは私のシステムで同じ問題を修正する。

これにより問題が解決する可能性がありますが、この設定や他の設定を変更する場合は注意してください。予期しないセキュリティ上の問題が生じる可能性があるため、本ソリューションを実稼働環境で使用する前に検証する必要があります。

あなたはhttpdの影響を与える設定のすべてを見ることができます:

$ getsebool -a | grep httpd 
関連する問題