cURL错误:[77]设置证书验证位置时出错

4

我使用Paypal IPN类Quixotix-PHP-PayPal-IPN

现在,我从Paypal收到通知发送到我的IPN监听器,我激活了该类,但是我遇到了以下错误:

exception 'Exception' with message 'cURL error: [77] error setting certificate verify locations:
CAfile: /home/star1231/public_html/cert/api_cert_chain.crt
CApath: none' in /home/star1231/public_html/ipn.php:79
Stack trace:
#0 /home/star1231/public_html/ipn.php(175): IpnListener->curlPost('cmd=_notify-val...')
#1 /home/star1231/public_html/ipn.php(7): IpnListener->processIpn()
#2 {main}

我搜索了关于这个错误的信息,

并且我在这个问题中读到需要安装ca-certificates包:如何处理使用cURL时与证书相关的问题以访问HTTPS网址?

我对这方面没有经验,不知道在哪里运行命令以及需要下载什么。

所以有人能否请解释一下如何在Godaddy的Cpanel上安装该软件包?


1
请明确您的问题,以便我们更好地帮助您。考虑阅读http://stackoverflow.com/help/how-to-ask上的帮助页面。 - David Schwartz
@DavidSchwartz,已编辑。 - Nati323
2个回答

2

请查看:https://github.com/Quixotix/PHP-PayPal-IPN/issues/37

将 $listener->use_curl = FALSE; 设置,问题解决了。

我不是 PHP 开发人员,对于 Linux 的帮助也很有限,但您应该通过仔细审查以下两个问题的答案来使其正常工作:

  1. Paypal IPN 获取空白确认(应为“已验证”或“无效”)
  2. 在尝试访问 HTTPS URL 时如何处理使用 cURL 的证书?

问题似乎出在您的证书颁发机构包上,正如meda所述:(来源:https://dev59.com/SnA75IYBdhLWcg3wrrNS#26260710

curl 默认使用一组证书颁发机构(CA)公钥(CA 证书)执行 SSL 证书验证。默认捆绑包名为 curl-ca-bundle.crt... 如果您想关闭 curl 对证书的验证,请使用 -k(或 --insecure)选项。

为了验证这是否是问题,建议在代码中添加 -k 或 --insecure 开关,这些代码位于 Quixotix-PHP-PayPal-IPN 中失败的位置。根据堆栈跟踪,这可能在 /home/star1231/public_html/ipn.php(175) 中。

假设这样可以解决问题,我们现在需要弄清楚捆绑包出了什么问题。

/home/star1231/public_html/cert/api_cert_chain.crt 文件是否存在?如果不存在,请从 (https://raw.githubusercontent.com/Quixotix/PHP-PayPal-IPN/master/cert/api_cert_chain.crt) 下载并放入该文件夹。

如果确保文件已放置正确位置后仍然遇到问题,则可能存在安全问题:

如果没有 tls/certs 文件夹:创建一个并使用 chmod 777 -R folderNAME 更改权限。


1

好的,如果有人需要解决方案... 首先,下载 api_cert_chain.crt

(如果此链接无效,请在谷歌上搜索“下载api_cert_chain.crt”或类似内容。)

第二步,下载文件后将其放入“cert”文件夹中,该文件夹应位于您的ipn监听器所在位置。 您已经准备就绪。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接