php h2,微信连接失败:一直返回<h2>Moved</h2> (终于搞定了)

这几天都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';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个HTML页面,我将解释每一行的意思: ```html <!DOCTYPE html> ``` 这是HTML5的文档类型声明,告诉浏览器使用HTML5来解析页面。 ```html <html lang="en"> ``` 这是HTML的根元素,`lang`属性表示页面的语言为英语。 ```html <head> <meta charset="UTF-8"> <title>Document</title> <style> p{ color:red; font-size:20px; } h2{ color:yellow; } .hello{ background: #cccccc; } .world{ font-weight:bold; } #haha{ color:blue; } </style> </head> ``` `head`标签用于定义文档的头部,包含了页面的元信息和样式。在这里,我们定义了一些CSS样式。 ```html <body> ``` `body`标签用于定义文档的主体部分。 ```html <p>welcome to css!</p> <p>hello world!</p> <h2>WEB前端开发</h2> <h3>Java开发</h3> <hr> ``` 这些是一些HTML标签,分别显示了一些文字和标题,并使用了`hr`标签插入了一个水平线。 ```html <p class="hello">welcome to css!</p> <p>hello world!</p> <h2>WEB前端开发</h2> <h3>Java开发</h3> ``` 这些标签中的`class`属性用于指定CSS样式类名,并应用对应的样式。 ```html <div class="hello">主讲:Hector</div> <div class="world">主讲:Hector</div> <hr> ``` 这里使用了`div`标签,同样使用了`class`属性来应用CSS样式类。 ```html <h1 id="haha">哈哈</h1> ``` 这个`h1`标签有一个`id`属性,用于唯一标识该元素,并应用了对应的CSS样式。 ```html </body> </html> ``` 这是HTML文档的结束标签,表示文档的结尾。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值