这几天都OK的,可以正常访问,统计数据上只出现过一次访问失败,但是平均耗时增加了30%

估计是上次那个心脏滴血事件后,腾讯要求停用SSLv3,必须用TLSv1,但是之前一直没有停止SSLv3的支持,现在真停了

因为这部分代码以前没动过,一直好好的,突然就挂了

加了

curl_setopt($curl,CURLOPT_CAINFO,$this->config->cacert); 后就OK了,但是一直会出现CURL_SSLVERSION_TLSv1没有定义,因为后面还得加:curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);

修改后的wechatapi.class.php的get和post方法:

/**

* Make a http get request and fetch the contents.

*

* @param string $url

* @access public

* @return string

*/

public function get($url)

{

if(!function_exists('curl_init')) die('I can\'t fetch anything, please set allow_url_fopen to ture or install curl extension');

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

if(isset($this->config->cacert)) {

curl_setopt($curl,CURLOPT_CAINFO,$this->config->cacert);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);

// curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);

curl_setopt($curl, CURLOPT_SSLVERSION, 1);

}else {

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

}

curl_setopt($curl, CURLOPT_TIMEOUT, 500);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);

curl_close($curl);

return $response;

}

/**

* Make a http post request.

*

* @param string $url

* @param string $data

* @access public

* @return void

*/

public function post($url, $data)

{

if(!function_exists('curl_init')) die('I can\'t do post action without curl extension.');

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

if(isset($this->config->cacert)) {

curl_setopt($curl,CURLOPT_CAINFO,$this->config->cacert);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);

curl_setopt($curl, CURLOPT_SSLVERSION, 1);

}else {

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

}

curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

$response = curl_exec($curl);

curl_close($curl);

return $response;

}

其中那个$config->cacert是个变量:

$config->cacert='D:\php\tools\https-ca\ca-bundle.crt';

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐