2017-02-23 179 views
0

我在Centos上使用php-5.6.30和Apache 2.2.15。我使用此代碼:每當我使用的URL喜歡http://www.example.com那麼它工作正常http://10.20.30.40:8001/index.html?uri=「URL HERE」 :

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

我訪問它喜歡。但是,無論何時我使用URL如http://127.0.0.1:8000/App/app.htmlhttp://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(阿帕奇2.2.15,PHP-5.6.17-3(CLI)是相同的代碼無法正常工作。

回答

0

$查詢= http_build_query(urldecode($ _ REQUEST [ '鏈接']));

,你也可以在PHP ini文件檢查了allow_url_fopen

,或者您也CA而不是使用的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