2012-09-17 25 views
5

Necesito traducir este comando curl en código PHP cURL:Traducir línea de comando curl en PHP cURL

> curl --get 'https://api.twitter.com/1/followers/ids.json' --data 
> 'cursor=-1&screen_name=somename' --header 'Authorization: OAuth 
> oauth_consumer_key="key", oauth_nonce="nonce", 
> oauth_signature="signature", oauth_signature_method="HMAC-SHA1", 
> oauth_timestamp="timestamp", oauth_token="token", oauth_version="1.0"' 
> --verbose 

He intentado esto, pero no parece funcionar:

> $ch = curl_init(); 
> curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth oauth_consumer_key="key", oauth_nonce="nonce", oauth_signature="signature", oauth_signature_method="HMAC-SHA1", oauth_timestamp="timestamp", oauth_token="token", oauth_version="1.0"')); 
> curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); 
> curl_setopt($ch, CURLOPT_VERBOSE, 1); 
> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
> curl_setopt($ch, CURLOPT_HTTPGET, 1); 
> curl_setopt($ch, CURLOPT_URL, 'https://api.twitter.com/1/users/show.json?cursor=-1&screen_name=somename'); 
> $page = curl_exec($ch); 
> curl_close($ch); 

de error que estoy recibiendo

SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

sin embargo funciona en el comando estándar rizo

+0

http://php.net/manual/en/book.curl.php –

+0

¿Cuál es el error que estás recibiendo? –

+0

Problema con el certificado SSL, verifique que el certificado CA esté correcto. Detalles: error: 14090086: rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: verificación de certificado fallido - ** sin embargo, funciona en el comando curl estándar ** – loudislav

Respuesta

2

Debe proporcionar curl con la cadena de certificados que le permita verificar que el certificado SSL de Twitter sea válido. Para ello, descargue las firmas de certificado requeridas from here y guárdelas en un archivo simple (supongo que lo llama cacert.pem).

Entonces, antes de hacer la solicitud, establezca CURLOPT_CAINFO a señalar a este archivo:

// assumes file in same directory as script 
curl_setopt($ch, CURLOPT_CAINFO, 'cacert.pem'); 

Es también una buena idea para permitir explícitamente la verificación del certificado SSL en lugar de depender de la configuración por defecto:

curl_setopt($ch, CURLOPT_VERIFYPEER, true); 
+0

Ahora me aparece este error: _setting certificate verify locations: CAfile: cacert.pem CApath: none_ What can I hacer con eso? – loudislav

+0

@loudislav: Hmm, quizás necesites configurar 'CURLOPT_CAPATH' en' .' también (asumiendo el archivo de certificado en el directorio actual). También asegúrese de que la ruta del archivo cert sea correcta. – Jon

+0

Sí, lo resolví. Gracias! – loudislav