从freshdesk api获取所有用户时,获取curl_error():2不是有效的cURL句柄资源

时间:2013-10-18 06:27:20

标签: php curl ticket-system

我正在创建自己的系统来管理所有来自freshdesk.com的门票。我正在发送curl请求从freshdesk.com获取数据。通过获取与代码相关的数据,它的工作正常,但是当我通过curl请求请求所有用户时,它会给我错误:

警告: curl_errno():2在第28行的C:\ wamp \ www \ test.php中不是有效的cURL句柄资源。

我的代码是这样的:

$ch = curl_init();  
$cOption = array(
    CURLOPT_URL            => 'http://velocity.freshdesk.com/contacts.xml',
    CURLOPT_HEADER         => 0,
    CURLOPT_USERPWD        => "$email:$password",
    CURLOPT_POST           => false,
    CURLOPT_HTTPHEADER     => array('Content-Type: application/xml'),
    CURLOPT_HTTPAUTH       => CURLAUTH_BASIC,
    CURLOPT_FAILONERROR    => 1,
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_SSLVERSION     => 2
);  
@curl_setopt_array( $ch, $cOption );  
curl_close($ch);
echo curl_errno($ch);  //line 28
echo curl_error($ch);  //line 29
echo $ch_result;  

输出是:
警告: curl_errno():2在第28行的C:\ wamp \ www \ test.php中不是有效的cURL句柄资源。
警告: curl_errno():2不是第29行C:\ wamp \ www \ test.php中的有效cURL句柄资源。
1 // echo $ ch_result的输出

请帮我弄清楚代码有什么问题以及为什么会出现这种警告。

3 个答案:

答案 0 :(得分:72)

关闭curl_errno后,您使用curl_error$ch。这不对。

您需要在获取有关错误的信息后关闭$ch

echo curl_errno($ch);
echo curl_error($ch);
curl_close($ch);

此外,您没有向$ch_result设置任何内容。如果您希望它包含您的请求结果,那么您错了。要解决此问题,您需要添加选项CURLOPT_RETURNTRANSFER并使用$ch_result = curl_exec($ch);

获取结果

答案 1 :(得分:12)

echo curl_errno($ch);
echo curl_error($ch);
必须在curl_close($ch);

之前调用

答案 2 :(得分:4)

关闭$ ch后使用curl_errno和curl_error。这不对。

您需要在获取有关错误的信息后关闭$ ch。

多数民众赞成真的我得到了答案。

        $data = curl_exec($ch);
        if (!curl_errno($ch)) {
         ....
        }
        curl_close($ch);