gpt4 book ai didi

php - 无法让 curl_exec 对 HTTPS url 起作用

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:35 25 4
gpt4 key购买 nike

我正在尝试使用 PHP curl_exec 从使用 HTTPS 协议(protocol)的网站获取一些信息。我在 Windows 服务器上使用 PHP。

我在尝试使 SSL 正常工作时遇到了重大问题。

这是我的代码:

$url = 'https://www.dublinairport.com/flight-information/live-departures';

$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem");
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($curl_handle, CURLOPT_TIMEOUT, 2000);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);

$raw = curl_exec($curl_handle);
echo curl_error($curl_handle);

curl_close($curl_handle);

我从这里获得了 ca 证书 - https://curl.haxx.se/ca/cacert.pem

我刚刚从那里复制文本并使用文本编辑器将其保存为 .pem 文件,应该没问题吧?

我遇到的问题是:

Unknown SSL protocol error in connection to www.dublinairport.com:443

我在 stackoverflow 上尝试了其他几种解决方案,包括将 SSL 版本强制设置为 1、2 和 3。

有关其他信息,当我尝试访问 https:google.com 而不是时,我收到如下不同的错误:

SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

所以我不知道接下来应该采取什么措施来尝试解决这个问题?

最佳答案

适合我。可能不是您想听到的答案。 :)

要回答您的第一个问题,是的,可以通过文本编辑器将 CA 证书放入文件中。起初我以为这可能是 Windows 行尾问题,但我确认 curl 适用于 UNIX 和 Windows 行尾(大概是 Mac,但该系统不涉及此问题)。

回答你的第二个问题。首先,我会在您的脚本中添加调试:

$url = 'https://www.dublinairport.com/flight-information/live-departures';

$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem");
curl_setopt($curl_handle, CURLOPT_URL, $url);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($handle, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');
curl_setopt($handle, CURLOPT_STDERR, $verbose);

$raw = curl_exec($curl_handle);
if (false === $raw) {
var_dump(curl_error($curl_handle));
rewind($verbose);
var_dump(stream_get_contents($verbose));
} else {
var_dump($raw);
}

curl_close($curl_handle);

其次,我会检查是否有任何代理您的请求的中间人。当我与一个据称安全的站点的连接被一个不安全的询问代理拦截时,我只看到了“未知的 SSL 协议(protocol)错误”(想想一个要求我的浏览器在使用有线服务之前接受服务条款的代理)。这可能就是这种情况,如 (a) 错误为您提供显式 端口号所证明的,即使您隐式指定了它,并且 (b) 它正在发生不止一个站点。

总之,我认为这不是代码问题。我认为这是您服务器外部的网络问题。

关于php - 无法让 curl_exec 对 HTTPS url 起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37036184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com