【发布时间】:2017-09-22 17:16:57
【问题描述】:
自从我们有了新服务器后,我们一直在努力解决 cURL(以前没有问题)。在过去的 6 个月中,我们一直在搜索并尝试从根本上解决问题,但没有成功。
我们正在运行一个 Ubuntu 16.04 服务器,在 PHP 和 Nginx 上有一个 Codeigniter 项目。
我们目前遇到问题的(composer)包是Mailgun API(它扩展了composer包php-http)
以下是我们通过 cURL 连接时遇到的错误
An uncaught Exception was encountered
Type: Http\Client\Exception\RequestException
Message: error setting certificate verify locations: CAfile: /etc/ssl/certs/ca-bundle.crt CApath: /etc/ssl/certs
Filename: /var/www/ domain /vendor/php-http/curl-client/src/Client.php
Line Number: 137
到目前为止,唯一对我们有用的解决方案是禁用 CURLOPT_SSL_VERIFYPEER,但我们必须在 composer 包中这样做,这显然不是一个合适的解决方案。
我希望这里有人能说明我们如何能够解决这个问题。
到目前为止我们所做的尝试:
- 检查服务器上的日期
- 禁用
CURLOPT_SSL_VERIFYPEER,但不是可行的解决方案 - 设置
.curlrc文件(但问题是webserver用户正在执行,所以没地方放? - 检查
/etc/ssl/certs/文件夹以查看文件是否存在。 sudo update-ca-certificates --fresh
文件夹的文件权限
root@Ubuntu-1604-xenial-64-minimal /etc/ssl/certs # ls -la ca*
lrwxrwxrwx 1 root root 37 Apr 26 11:17 ca6e4ad9.0 -> ePKI_Root_Certification_Authority.pem
-rwxrwxrwx 1 root root 274340 Mar 8 17:09 ca-bundle.crt
-rwxrwxrwx 1 root root 274340 Apr 26 11:25 ca-certificates.crt
-rwxrwxrwx 1 root root 261889 Jan 18 06:12 cacert.pem
-rwxrwxrwx 1 root root 261889 Jan 18 06:12 cacert.pem.txt
【问题讨论】:
-
@Deadooshka 谢谢,我已经考虑过了,但不确定你想让我做什么:-) 我已经检查过了,它设置为
curl.cainfo = /etc/ssl/certs/cacert.pem。此文件存在并已从以下位置下载新版本:curl.haxx.se/docs/caextract.html。 -
您是否检查了该路径的文件/目录权限?
-
你能用 ie
file_get_contents()从 curl 上下文中读取这个文件吗? -
它由 php-interpreter 或 web-server 进程读取,除非您运行 curl 可执行文件。我还会检查路径的另一个目录的权限。
标签: php codeigniter ssl curl nginx