php h2,微信连接失败:一直返回h2Moved/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';
總結
以上是生活随笔為你收集整理的php h2,微信连接失败:一直返回h2Moved/h2 (终于搞定了)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php在苹果手机上传不了图片大小,Thi
- 下一篇: 宝塔php gd库,宝塔面板安装 Eas