- 注册时间
- 2012-11-28
- 最后登录
- 2021-2-12
- 阅读权限
- 200
- 积分
- 3774
- 精华
- 0
- 帖子
- 116
ta_mind | mb_qb7 2013-3-19 01:56 |
---|
classn_01: 366 classn_02 [LV.9]以坛为家II
|
微信支付的接口文件demo一拿到,就放到的服务器上测试,首先打开,把对应的参数配置好,打开一看第一个错误就出现了
微信支付示例接口一打开就报了这样的错误
Notice: Use of undefined constant CURLOP_TIMEOUT - assumed 'CURLOP_TIMEOUT' in /wx_pay_test/WxPayPubHelper/WxPayPubHelper.PHP on line 155
Warning: curl_setopt() expects parameter 2 to be long, string given in wx_pay_test/WxPayPubHelper/WxPayPubHelper.php on line 155
一下就懵了,仔细打开源码一看,文件中在155行这里设置超时的时候,本来应该是
curl_setopt($ch, CURLOPT_TIMEOUT, $second);
可是接口中的文件却是这样的
curl_setopt($ch, CURLOP_TIMEOUT, $second);
哈哈,设置参数的字母写错了,修改这里,两条报错消失。
可是这个问题解决后,紧接着又一个问题出现了,
Warning: curl_close(): 5 is not a valid cURL handle resource in.....
这个是什么原因呢?
打开对应的代码看看,如下便是对应位置的代码,只列举一部分
169行起
//运行curl
$data = curl_exec($ch);
curl_close($ch); //返回结果
if($data) {
curl_close($ch);
return $data;
} else {
$error = curl_errno($ch);
echo "curl出错,错误码:$error"."<br>";
echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>";
curl_close($ch);
return false;
}
仔细查看发现腾讯官方的开发人员也太粗心了,在注释返回结果前面的那一行,已经将$ch连接关闭了,后面的if..else语句中又对它进行了关闭操作,很明显,第二次调用的时候这个连接已经不存在了,必然会报错啊。
解决方法
解决方法很简单,直接将注释返回结果前面的那一行注释掉即可。
修改后的代码如下:
169行起
//运行curl
$data = curl_exec($ch);
//curl_close($ch); //返回结果
if($data) {
curl_close($ch);
return $data;
} else {
$error = curl_errno($ch);
echo "curl出错,错误码:$error"."<br>";
echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>";
curl_close($ch);
return false;
}
运行结果出来了
|
|