1

我试图让 PHP 执行与另一台服务器的 curl 连接。要连接到服务器,我们需要通过代理。在 bash 中,我们设置了 env 变量 http_proxy,这在从命令行使用 php 脚本时可以正常工作。但是,当尝试从 apache 执行 curl 或 wget 时,它会失败且没有错误。服务器配置了基于 Centos 默认设置的 SELinux。由于我不确定 SELinux 配置,所以这一直没有改变。有没有其他人有类似的问题?

4

2 回答 2

2

回复晚了非常抱歉。这与 SELinux 阻止 apache 执行对网络的调用有关。要允许 apache 执行此操作,您需要运行:

setsebool -P httpd_can_network_connect 1

然后我遇到了另一个相关问题,我需要从命令行执行脚本并且找不到合适的 SELinux 属性,因此最终禁用了它......哦,好吧。

于 2011-01-18T17:20:47.373 回答
0

当您“从命令行执行”时,网络服务器进程很可能不在与您相同的用户下运行,它也可能不会具有相同的 shell 环境。但是,您可以在 curl 请求中显式配置代理服务器。如果我没记错的话,它是-x 开关。你也可以传递很多参数。只需查看手册页。wget 也支持代理,但据我所知,你配置的参数是肯定的。另请参阅手册页。

于 2010-11-29T19:05:40.110 回答