我尝试使用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,但不适用于安装在Fedora 17中的httpd。
错误在哪里?
答案 0 :(得分:1)
最常见的原因是SELinux不允许httpd建立网络连接。
要解决此问题,您需要更改SELinux布尔值(在重新启动后会自动保留)。您可能还想重新启动httpd以重置代理工作程序,尽管这不是严格要求的。
答案 1 :(得分:0)
所以我看到一台服务器在你的ubuntu上工作,但在fedora服务器上没有。 fedora服务器可能在其php设置中关闭了Allow_url_fopen(file_get_contents使用fopen())选项。 http://php.net/manual/en/filesystem.configuration.php
BUT!不要改变安全设置。如果你想下载一些东西,curl可以很好地工作,而不会打开安全漏洞。