微信公众平台 JSSDK 示例代码 CURL SSL配置项错误
curl_setopt(): CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value 2
jssdk.php
# ......
private function httpGet($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
// 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
// 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
# ......
修改
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
为
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
CURLOPT_SSL_VERIFYHOST
设置为 1 是检查服务器SSL证书中是否存在一个公用名(common name)。
译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。
设置成 2,会检查公用名是否存在,并且是否与提供的主机名匹配。 在生产环境中,这个值应该是 2(默认值)。
值 1 的支持在 cURL 7.28.1 中被删除了。