Curl找不到证书文件

时间:2017-03-09 03:23:25

标签: php curl

Ubuntu 16.04.2 LTS
PHP 7.0.15-0ubuntu0.16.04.4 (cli) ( NTS )
curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3

在主目录中,我创建了一个.curlrc文件,其中包含以下内容:

cacert=/etc/ssl/certs/ca-certificates.crt

当我这样做时:

ls -l /etc/ssl/certs/ca-certificates.crt

产生

-rwxr-x--x 1 phptools phptools 274340 Jan 18 20:03 /etc/ssl/certs/ca-certificates.crt

但是,当我尝试从我的php脚本调用curl时,我收到以下错误:

error setting certificate verify locations:
  CAfile: /etc/ssl/certs
  CApath: /etc/ssl/certs

证书在那里。我做错了什么?

1 个答案:

答案 0 :(得分:1)

仅供参考,您的主目录中的.curlrc文件对PHP中的curl没有任何影响。

但问题很可能是CAfile需要是实际文件,而不是路径。当curl去检查那些时,它会失败,因为那不是文件。

您可以尝试使用这些php.ini settings或在代码中使用CURLOPT_CAINFO进行更正(例如curl_setopt($ch, CURLOPT_CAINFO, '/etc/ssl/certs/ca-certificates.crt');

如果使用CAfile构建事物(cURL,OpenSSL,GnuTLS)作为路径而不是文件,则需要在编译时更正。