【问题标题】:PHP file can access global net from terminal, but not from apachePHP文件可以从终端访问全局网络,但不能从apache
【发布时间】:2013-03-05 04:42:54
【问题描述】:

我有以下问题。我们的公司网络中有一个在 CentOS 上运行的私有服务器。代理服务器在运行 NTLMV2 身份验证的 Windows 上。

所以,我在我的 CentOS 服务器上安装了 cntlm 以便访问所需的资源。一切正常。我的意思是,当从终端运行时,curl、wget 和 yum 可以在这个 cntlm 代理上正常工作。

但是,有一件事是行不通的。我们还在此服务器上运行 Apache + PHP + MySQL 实例。诀窍是 - 它无法以某种方式访问​​代理。这是使用 curl 的示例 PHP 文件:

<?php
$url = "http://www.google.com";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_PROXY, 'http://127.0.0.1:3128');
$data = curl_exec($ch);
if ($data == FALSE) echo curl_error($ch);
curl_close($ch);
var_dump($data);
?>

当我从命令行执行时:

php curl.php | tail -n 10

一切都很好,它可以通过这个代理访问全局资源。但是,如果我从浏览器页面运行它,Apache 无法连接,并给出错误“无法连接到 127.0.0.1:权限被拒绝”

【问题讨论】:

    标签: proxy ntlmv2


    【解决方案1】:

    自从我开始这个问题以来已经很长时间了,但我终于找到了解决方案。原来问题在于 SELinux 权限,默认情况下不允许 Apache 执行脚本,试图访问网络。

    为了解决问题,需要运行以下命令:

    setsebool -P httpd_can_network_connect on
    

    更多信息可以在here找到。

    【讨论】:

      猜你喜欢
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 2021-01-16
      • 2012-06-12
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多