PHP Curl适用于本机库,但不适用于ZF2

PHP Curl适用于本机库,但不适用于ZF2,php,curl,https,zend-framework2,Php,Curl,Https,Zend Framework2,我正在使用PHP5.3上的TLS1.1连接到远程服务器 使用Zend Framework 2时,我遇到一个错误: $client = new Client('https://www.example.com/'); $curlAdapter = new Client\Adapter\Curl(); $curlAdapter->setCurlOption(CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1); $client->setAdapter

我正在使用PHP5.3上的TLS1.1连接到远程服务器

使用Zend Framework 2时,我遇到一个错误:

$client = new Client('https://www.example.com/');  
$curlAdapter = new Client\Adapter\Curl();
$curlAdapter->setCurlOption(CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1);
$client->setAdapter($curlAdapter);
$client->send();
结果:cURL请求中出错:SSL连接错误

添加此选项可以解决问题,但显然不太安全

$curlAdapter->setCurlOption(CURLOPT_SSL_VERIFYHOST, 2);
$curlAdapter->setCurlOption(CURLOPT_SSL_VERIFYPEER,false);
结果:它起作用了

使用本机PHP命令发出请求效果良好:

$c = curl_init('https://www.example.com/');

$options = array(
    CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_1,
);

curl_setopt_array ($c ,$options );
curl_exec($c);
返回页面的内容


因此PHP可以工作,但ZF2不能,除非VerifyPeer=false。问题出在哪里?

可能是因为缺少一个参数:

 CURLOPT_CAINFO => '/etc/ssl/certs/ca-bundle.pem' // replace with your cert.
也可能您正在使用不同的php配置(web/cli),这些配置指向具有ssl证书的不同位置。此处还提供了一些详细信息: