2013-10-18 14 views
16

Ich erstelle ein eigenes System zur Verwaltung aller Tickets, die von freshdesk.com über seine API kommen. Ich mache eine Curl-Anfrage, um Daten von freshdesk.com zu holen. Mit Abrufen von Daten von verwandten seine Werke tickers in Ordnung, aber wenn ich für alle Benutzer durch curl Anfrage bitte um Zusendung dann geben der mir Fehler:curl_error() erhalten: 2 ist keine gültige cURL-Handle-Ressource beim Abrufen aller Benutzer von freshdesk api

Warnung: curl_errno(): 2 ist kein gültiger cURL-Handle resource in C: \ wamp \ www \ test.php auf Leitung 28

My Code ist wie folgt aus:

$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; 

Ausgang ist:
Warning: curl_errno(): 2 sind keine gültigen cURL Griff Ressourcen in C: \ wamp \ www \ test.php auf lin e 28.
Warning: curl_errno(): 2 ist keine gültige cURL Griff Ressource in C: \ wamp \ www \ test.php auf Leitung 29
1 // Ausgang echo $ ch_result

Bitte helfen Sie mir herauszufinden, was mit dem Code nicht stimmt und warum diese Warnungen auftreten.

Antwort

50

Sie verwenden curl_errno und curl_error nach dem Schließen $ch. Es ist nicht richtig.

Sie müssen Ihre $ch nach dem Abrufen von Informationen über Fehler schließen.

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

Auch Sie haben nichts auf $ch_result festgelegt. Wenn Sie erwarten, dass es das Ergebnis Ihrer Anfrage enthält, liegen Sie falsch. Um dies zu beheben müssen Sie Option hinzufügen CURLOPT_RETURNTRANSFER und holen Sie das Ergebnis mit $ch_result = curl_exec($ch);

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

muss vor curl_close($ch);

1

Sie verwenden genannt werden curl_errno und curl_error nach $ ch schließen. Es ist nicht richtig.

Sie müssen Ihre $ ch nach dem Abrufen von Informationen über Fehler schließen.

das ist wahr, ich bekomme diese Antwort.

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