CURL 无法在 Red Hat、Apache、PHP、AWS 上的 Web 浏览器中工作

问题描述 投票:0回答:2

我在运行 Apache 的 Red Hat AWS 服务器上有一个 PHP 脚本:

$url = "https://testsite.com/testfile.txt";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo curl_error($ch);
$responseInfo = curl_getinfo($ch);
echo "http_code=".$responseInfo['http_code']."\n".$response."\n";
curl_close($ch);

当我从 SSH 终端运行它时,它可以工作。但如果我在网络浏览器中加载该页面,它会返回“http_code=0”。在这两种情况下,curl_error 都不会返回任何内容。

我需要做什么才能让 CURL 在网络浏览器中工作?

php linux amazon-web-services curl redhat
2个回答
1
投票

由于没有生成错误,可以假设curl正在工作,但您没有得到期望的结果。

背后可能有不止一个原因 -

首先检查安全组中的出站规则,可能是那里失败了

其次可能是https的原因,尝试使用curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

还要检查 libcurl 是否安装

如果尝试以上3件事不起作用,那么就必须寻找其他可能性。


0
投票

当您在 RHEL 发行版上运行时,我猜这是一个 SELinux 问题。有关在 RHEL 上为 Apache/httpd 配置 SELinux 的指南可以在此处找到。

将 SELinux 策略设置为“Permissive”可以解决您的问题。 但在这样做之前请先阅读上述链接的含义。 更精细的修复是将 httpd_can_network_connect 的 SELinux 标志设置为“on”。由于这与安全有关,因此请先自行阅读,使用风险自负。 (如果命令失败,请使用 sudo 运行)。

setsebool -P httpd_can_network_connect on

关于开启国旗的安全影响的意见。

SELinux 布尔列表及描述。

在此处阅读有关“setsebool”命令的更多信息。

有同样问题的帖子。

© www.soinside.com 2019 - 2024. All rights reserved.