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
证书在那里。我做错了什么?
答案 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)作为路径而不是文件,则需要在编译时更正。