2013-10-18 4 views
16

私は自分自身のシステムを作成して、freshdesk.comのAPIを通じて提供されるすべてのチケットを管理します。私はfreshdesk.comからデータを取得するようにカールを要求しています。罰金の作品をテロップに関連のデータを取得するが、私はカールの要求を介してすべてのユーザーに対して要求していたときと、その私にエラーを与える:curl_error()を取得する:2はfreshdesk apiからすべてのユーザーをフェッチするときに有効なcURLハンドルリソースではありません

警告: curl_errno():2はCで有効なのcURLハンドルリソースではありませんが。ライン上の\ WAMP \ WWW \ test.phpを28

私のコードは、そのようなものです:

$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が有効なのcURLハンドルリソースではありませんlinのC:\ wamp \ www \ test.phpにあります電子28.
警告: curl_errno():2はCで有効なのcURLハンドルリソースではありません:\ WAMP \ WWW \ test.phpをライン上の29
1 //エコー$のch_resultの出力

コードに何が間違っているのか、なぜこの警告が出るのか理解してください。

答えて

50

$chを閉じた後にcurl_errnocurl_errorを使用します。それは正しくありません。

エラーについての情報を取得した後で$chを終了する必要があります。

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

また、$ch_resultに何も設定していません。それがあなたの要求の結果を含んでいることを期待すればあなたは間違っています。この問題を解決するには、$ CHを閉じた後curl_close($ch);

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

が呼び出されなければならないとの結果をオプションCURLOPT_RETURNTRANSFERを追加し、フェッチする必要があります。それは正しくありません。

エラーに関する情報を取得した後、$ chを閉じる必要があります。

私はこれに答えます。

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

あなたがcurl_errnoとcurl_errorを使用する前$ch_result = curl_exec($ch);

関連する問題