2017-03-09 95 views
0
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的doung一个卷曲调用脚本,我得到以下错误:

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

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

回答

1

仅供参考,您的主目录中的.curlrc文件不会对PHP中的curl产生任何影响。

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

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

如果事情(卷曲,OpenSSL的,的GnuTLS)与凭证档案错误建成一个路径,而不是一个文件,这就需要将在编译时修正了

+0

我在我的代码中没有,我没有具体的文件名,只是路径,因为我认为文档说的是指定路径,而不是确切的文件名。 – EastsideDeveloper