这是我的环境设置:
Mac OS Sierra (10.12.2)
XAMPP 5.6.23
PHP 5.6.23
我正在使用XAMPP附带的PHP版本:
$ which php
/Applications/XAMPP/bin/php
$ php -v
PHP 5.6.23 (cli) (built: Jun 24 2016 09:25:00)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
这是我的PHP代码:
$postData = array('FORM_DATA' => 'data');
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://testhub.banregio.com/adq',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postData,
CURLOPT_FOLLOWLOCATION => true
));
$response = curl_exec($curl);
$err = curl_error($curl);
echo $response;
echo $err;
curl_close($curl);
我已将以下行添加到php.ini
文件中,当然,还从https://curl.haxx.se/ca/cacert.pem下载了cacert.pem
文件:
curl.cainfo=/Applications/XAMPP/xamppfiles/etc/cacert.pem
我的php.ini文件位于:
$ php --ini
Configuration File (php.ini) Path: /Applications/XAMPP/xamppfiles/etc
Loaded Configuration File: /Applications/XAMPP/xamppfiles/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
无效。我无法将CURLOPT_SSL_VERIFYPEER
设置为false
。
接下来,我在上面的代码中添加了cURL
的这些选项:
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => '/path/to/my/exported/certificate.crt'
该网站有以下证书:
当然,我必须从 Keychain Access :
中导出它 Keychain Access 可以导出*.pem
和*.cer
证书。我试过两个。实际上,我将*.cer
证书重命名为*.crt
。
也没用。
答案 0 :(得分:-1)
在本地,您可以简单地禁用SSL(请不要在生产服务器上尝试此操作。)
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);