2017-03-09 94 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