1

好的,我有两个 Linux 机器在代理服务器后面运行。两个框都设置为通过连接端口 801 来绕过过滤。

方框 A - Fedora Core 12 / PHP 5.3.1

方框 B - RHEL 6 / PHP 5.3.3

在 Box AI 上,可以使用 file_get_contents() 连接到外部站点。

<?php
$opts = array(
              'http' => array(
                              'proxy' => 'tcp://10.136.132.1:801',
                              'request_fulluri' => true
                             )
             );

$cxContext = stream_context_set_default($opts);
echo file_get_contents("http://www.google.com");

这会导致显示 Google 的主页。

在 Box BI 上运行相同的代码,但出现此错误:

Warning: file_get_contents(http://www.google.com): failed to open stream: Permission denied

两个盒子都在同一个网络上,在同一个代理服务器后面。我在 Apache 或 PHP 中是否缺少允许 file_get_contents 在 Box B 上工作的设置?

4

2 回答 2

3

听起来您启用了 SELinux,默认情况下它会阻止 Apache 的任何传出连接。尝试在你的 shell 中以 root 身份运行它:

setsebool -P httpd_can_network_connect on

更多关于 SELinux 布尔值的信息可以在这里找到: http ://wiki.centos.org/TipsAndTricks/SelinuxBooleans

于 2012-05-01T14:07:55.343 回答
0

这可能是因为 google 阻止了似乎来自 Bot 或 Script 的请求。可能是因为 Box A 在向 google 请求时设置了额外的标头。

尝试在 Box b 上打开其他网站

于 2012-05-01T13:48:41.697 回答