2017-02-23 48 views
0

Я использую php-5.6.30 и Apache 2.2.15 на Centos. Я использую этот код:

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

Я доступ к ней нравится: http://10.20.30.40:8001/index.html?uri= «URL 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, он возвращает 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 (АОН) не работает.

ответ

0

$ запрос = http_build_query (urldecode ($ _ REQUEST [ 'URL']));.

а также вы можете проверить allow_url_fopen в PHP ини файле

или ча также использовать локон вместо file_get_contents

+0

не работает. allow_url_fopen = ON, уже проверено. –

0

Возможно, что настройки 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