php curl https

使用 curl 採集 https 網址時報錯:php

$html = curl_exec(self::$ch);
if (!$html) {
      echo curl_errno(self::$ch).PHP_EOL;
      echo curl_error(self::$ch);
 }

77html

error setting certificate verify locations:linux

CAfile: C:\Users\local\ssl\cert.pem瀏覽器

CApath: nonefalsecurl

  1. php 手冊上查詢到 curl 錯誤代碼:url

    [77] => 'CURLE_SSL_CACERT_BADFILE'code

    字面意思是 ca 證書文件錯誤htm

  2. 網上有說從瀏覽器中一條條導出,感受太過麻煩。試着從本身的 linux 上拷貝了份證書覆蓋掉 win 系統 中的 C:\Users\local\ssl\cert.pem 發現能用。ssl

linux 中 ca 證書默認位置:/etc/ssl/certs/get

cp /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /mnt/www/

拷到 C:\Users\local\ssl\ 目錄下,替換掉 cert.pem 便可

另外一種解決方式,是代碼中設置 curl 選項

if (strpos($url, 'https') === 0) {
      $opts[CURLOPT_SSL_VERIFYPEER] = false;
}

ps:

查看 php 使用的配置文件路徑:

php -i |findstr /i config

php 證書位置設置: vi /etc/php.ini

openssl.cafile="C:\Users\local\ssl\cert.pem"

https://curl.haxx.se/mail/curlphp-2005-11/0038.html

http://stackoverflow.com/questions/3160909/how-do-i-deal-with-certificates-using-curl-while-trying-to-access-an-https-url

相關文章
相關標籤/搜索