2017-02-23 1 views
0

J'utilise php-5.6.30 et Apache 2.2.15 sur Centos. J'utilise ce code:

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

Je y accéder comme: http://10.20.30.40:8001/index.html?uri= « URL ICI » Chaque fois que je suis en utilisant comme URL http://www.example.com il fonctionne très bien. Mais chaque fois que j'utilise une URL comme http://127.0.0.1:8000/App/app.html ou http://10.10.10.40:9000/App/app.html, elle retourne bool (false).

Lorsque j'utilise le même code (ci-dessus code) sur Windows WampServer (Apache 2.4.18 - PHP 5.6.19 - MySQL 5.7.11) et y accéder. Cela fonctionne bien. Mais quand je suis en utilisant le même code avec Centos (Apache 2.2.15, PHP-5.6.17-3 (cli) il ne fonctionne pas.

Répondre

0

$ query = http_build_query (urldecode ($ _ REQUEST [ 'url'])).

et vous pouvez vérifier allow_url_fopen dans le fichier php ini

ou ca vous aussi utiliser boucle au lieu de file_get_contents

+0

ne fonctionne pas. allow_url_fopen = ON, déjà coché. –

0

Il se peut que les paramètres SELinux f ou httpd interdit certaines connexions sortantes. Essayez de vérifier les paramètres suivants:

$ getsebool httpd_can_network_connect 
httpd_can_network_connect --> off 

Si elle est désactivée, essayez ce qui lui permet:

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

Maintenant, votre serveur httpd devrait être en mesure d'établir des connexions sortantes. Je ne sais pas exactement pourquoi il pourrait déjà se connecter à http://www.example.com, mais pas localhost, mais cela résout le même problème sur mon système.

Bien que cela corrigera probablement votre problème, faites attention à changer cela et d'autres paramètres. Il pourrait y avoir des implications de sécurité imprévues, donc vous devriez vérifier cette solution avant de l'utiliser en production.

Vous pouvez voir tous les paramètres qui affectent httpd:

$ getsebool -a | grep httpd