PHP-cURL 出站调用在本地主机中有效,但在 AWS 托管的网站中不起作用,尽管允许所有流量



我在我的wordpress网站(托管在aws linux上)中使用curl从一些API中获取一些信息。问题:我仅从其中一个 api 获得连接超时。我也联系了 api 提供商,他们说 api 工作正常。5天前,相同的代码运行良好。

现在,在通过堆栈并运行一些变体后,结果是: 1)相同的代码在本地主机中工作。 2)它也适用于邮递员。 3)代码已从邮递员复制到网站,但仍超时。4) 我编辑了 aws vpn nacl,以允许除 aws 建议的流量之外的所有入站和出站流量,但仍然超时。

这是我正在使用的基本功能,从邮递员那里复制然后修改:

function my2get_curl($myurl){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $myurl,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_USERAGENT =>$user_agent,
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
$info = curl_getinfo($curl);
curl_close($curl);
if ($err) {
echo "  cURL Error #:" . $err;
echo json_encode($info,JSON_PRETTY_PRINT);
die('');
} else {
return $response;
}
}

以下是结果/curl 错误(除了端口号更改为 80 之外,http 相同):

Failed to connect to www.travelpayouts.com port 443: Connection timed out

curl_info:

{ "url": "https://www.travelpayouts.com/whereami?locale=en&callback=useriata&ip=<my.ip.address>", "content_type": null, "http_code": 0, "header_size": 0, "request_size": 0, "filetime": -1, "ssl_verify_result": 0, "redirect_count": 0, "total_time": 21.03931, "namelookup_time": 0.066799, "connect_time": 0, "pretransfer_time": 0, "size_upload": 0, "size_download": 0, "speed_download": 0, "speed_upload": 0, "download_content_length": -1, "upload_content_length": -1, "starttransfer_time": 0, "redirect_time": 0, "redirect_url": "", "primary_ip": "", "certinfo": [], "primary_port": 0, "local_ip": "", "local_port": 0 }

代码或(更有可能)aws 设置有问题吗?我究竟如何找出导致问题的原因并修复它。

您遇到此问题是因为亚马逊 IP 已关闭以访问我们的 API。您可以在亚马逊上发送静态IP,我们将添加它们。

最新更新