【问题标题】:PHP Curl works with native library but not with ZF2PHP Curl 适用于本机库,但不适用于 ZF2
【发布时间】:2016-02-09 13:40:18
【问题描述】:

我正在使用 PHP 5.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。有什么问题?

【问题讨论】:

    标签: php curl https zend-framework2


    【解决方案1】:

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

     CURLOPT_CAINFO => '/etc/ssl/certs/ca-bundle.pem' // replace with your cert.
    

    您也可能使用不同的 php 配置(web / cli),这些配置指向具有 ssl 证书的不同位置。一些细节也可以在这里找到:Security consequences of disabling CURLOPT_SSL_VERIFYPEER (libcurl/openssl)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-21
      • 2011-09-09
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多