PHP Curl 适用于本机库但不适用于 ZF2
PHP Curl works with native library but not with ZF2
我正在 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);
Returns页面内容。
所以 PHP 有效,但 ZF2 无效,除非 VerifyPeer = false。有什么问题?
可能是因为你少了一个参数:
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)
我正在 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);
Returns页面内容。
所以 PHP 有效,但 ZF2 无效,除非 VerifyPeer = false。有什么问题?
可能是因为你少了一个参数:
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)