私は、freshdesk.comからAPIを通じて提供されるすべてのチケットを管理するための独自のシステムを作成しています。 freshdesk.comからデータを取得するためにcurlリクエストを行っています。ティッカーに関連するデータを取得すると正常に動作しますが、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行目のC:\ wamp\www\test.phpにある2は有効なcURLハンドルリソースではありません。
警告: curl_errno():2は、C:\ wamp\www\test.phpの29行目の有効なcURLハンドルリソースではありません。
1 // echo $ ch_resultの出力
コードの何が問題なのか、なぜこの警告が発生するのかを理解してください。
_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);
で結果を取得する必要があります
_echo curl_errno($ch);
echo curl_error($ch);
_
curl_close($ch);
の前に呼び出す必要があります
$ chを閉じた後にcurl_errnoとcurl_errorを使用します。それは正しくありません。
エラーに関する情報を取得した後、$ chを閉じる必要があります。
それは本当です、私はこれに答えます。
$data = curl_exec($ch);
if (!curl_errno($ch)) {
....
}
curl_close($ch);