2013-10-18 4 views
16

Sto creando il mio sistema per gestire tutti i ticket provenienti da freshdesk.com tramite la sua API. Sto facendo richiesta di arricciatura per recuperare i dati da freshdesk.com. Con il recupero dei dati del correlate a ticker suoi lavori bene, ma quando sto chiedendo a tutti gli utenti attraverso ricciolo richiesta allora la sua darmi errore:Ottenere curl_error(): 2 non è una risorsa handle cURL valida durante il recupero di tutti gli utenti da freshdesk api

Attenzione: curl_errno(): 2 non è un ricciolo risorsa handle valido in C: \ wamp \ www \ test.php on line 28.

il mio codice è così:

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

uscita è:
Attenzione: curl_errno(): 2 non è una risorsa valida handle cURL in C: \ wamp \ www \ test.php su lin e 28.
Attenzione: curl_errno(): 2 non è un ricciolo risorsa handle valido in C: \ wamp \ www \ test.php sulla linea 29.
1 // output di echo $ ch_result

Per favore aiutami a capire cosa c'è di sbagliato nel codice e perché si verificano questi avvertimenti.

risposta

50

Si utilizza curl_errno e curl_error dopo la chiusura $ch. Non è corretto.

È necessario chiudere lo $ch dopo aver recuperato le informazioni sull'errore.

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

Inoltre, non è stato impostato nulla su $ch_result. Se ti aspetti che contenga il risultato della tua richiesta, hai torto. Per risolvere questo problema è necessario aggiungere l'opzione CURLOPT_RETURNTRANSFER a prendere il risultato con $ch_result = curl_exec($ch);

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

deve essere chiamato prima curl_close($ch);

1

Si utilizza curl_errno e curl_error dopo la chiusura $ ch. Non è corretto.

È necessario chiudere $ ch dopo aver recuperato le informazioni sull'errore.

questo è vero mi viene risposto.

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