发新话题
打印

PHP开发-用curl向https发请求时的35号错误

PHP开发-用curl向https发请求时的35号错误

在做支付宝第三方支付是,本地用curl提交数据没有任何问题:
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_TIMEOUT, $second);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_FAILONERROR, TRUE);

        $data = curl_exec($ch);
        if($data){
            curl_close($ch);
        }else{
            $error = curl_errno($ch);
            curl_close($ch);

            $data = 'CURL_ERROR:'.$error;
        }
但当升级到生产环境的时候报如下错误:
curl_errno($ch) -----> 35

查了很多资料,终于发现要强行指定SSL的版本,即加上下面的话就可以了:
curl_setopt($ch, CURLOPT_SSLVERSION, 3);

亲自测试通过。

TOP

发新话题