gpt4 book ai didi

php - cURL 因 SSL 证书拒绝而失败?

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

我正在管理一个测试版网站,其中只有少数试用用户(20 人中有 3 人)无法看到某些页面上的内容。每个用户都在不同的网络上使用不同的计算机。我已确保这 3 个用户启用了 JavaScript,但这并不能解决问题。

深入研究,缺少内容似乎是由于 cURL 调用失败;对于这些用户来说,curl_exec() 似乎要么失败,要么没有返回任何数据,这又会返回一个空结果,这就是他们看不到任何信息的原因。对于这 3 个用户,此问题存在于 3 个不同的浏览器(Chrome、IE、Firefox)中。我已确认这不是由于任何用户设置(例如用户 ID)造成的,因为我可以从不同网络上的多台计算机登录他们的帐户并获得响应。

我认为罪魁祸首可能是他们的机器/网络处理 SSL 证书的方式。我对 SSL 证书不是很精通,所以请原谅我在某些领域的无知或明显错误。然而,消除过程让我相信网站证书被这 3 个用户的网络/机器拒绝,因此 cURL 调用失败。我的问题是如何验证是这种情况,如果是这样,原因是什么,我该如何解决问题?

该网站是使用 Zend 框架用 PHP 构建的。这是相关的代码:

$ssl_cert = ZendGA_Global::getOption('curl_ssl_certificate');
$ssl_verify_peer = ZendGA_Global::getOption('curl_ssl_verify_peer');
$ssl_verify_host = ZendGA_Global::getOption('curl_ssl_verify_host');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// related to SSL cerificate verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $ssl_verify_host);
curl_setopt($ch, CURLOPT_CAINFO, $ssl_cert);


//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

如有任何帮助,我们将不胜感激。

最佳答案

我已经弄清楚问题所在:cURL 调用失败,但这只是因为 URL 不正确,这是一个起源于其他地方的问题。该 URL 是从一个基本 URL 加上一些参数创建的,但是获取基本 URL 的函数是获取主机名而不是域名。一些用户通过 VPN 登录,这导致主机名读取略有不同,这就是 URL 错误的原因。好吧,那是相当复杂,但问题已经解决了。 :-)

关于php - cURL 因 SSL 证书拒绝而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11475195/

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