headers callapi body php curl localhost

callapi - PHP Curl no funciona en localhost?



php curl patch (6)

¿Realmente tienes el binario curl instalado? Puede tener la biblioteca curl instalada con PHP sin tener el binario curl en su sistema. Colocar en un indicador de shell y escribir curl . (Si es estándar en OSX, perdona mi ignorancia, no soy un Mac)

Estoy usando MAMP Pro 1.9.4 en Mac OSX
En phpinfo() veo que curl está habilitado

cURL support enabled cURL Information 7.20.0 Age 3 Features AsynchDNS No Debug No GSS-Negotiate No IDN Yes IPv6 Yes Largefile Yes NTLM Yes SPNEGO No SSL Yes SSPI No krb4 No libz Yes CharConv No Protocols dict, file, ftp, ftps, http, https, imap, imaps, ldap, pop3, pop3s, rtsp, smtp, smtps, telnet, tftp Host i386-apple-darwin8.11.1 SSL Version OpenSSL/0.9.7l ZLib Version 1.2.3

Mi script es para geocodificar lat tiempo desde Google Apis. Funciona en línea en mi servidor de proveedores de alojamiento pero no en localhost ... ¿POR QUÉ?

$latlng = "44.3585230889,8.57745766643"; $lang = "it"; $geocodeURL = "http://maps.googleapis.com/maps/api/geocode/json?latlng=$latlng&sensor=false&language=$lang"; $ch = curl_init($geocodeURL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpCode == 200) { $geocode = json_decode($result); $location = $geocode->results[0]->address_components[0]->long_name; $city = $geocode->results[0]->address_components[1]->long_name; $province = $geocode->results[0]->address_components[2]->long_name; $region = $geocode->results[0]->address_components[3]->long_name; $country = $geocode->results[0]->address_components[4]->long_name; $geo_status = $geocode->status; $geo_str = "$location, $city, $province, $region, $country"; } else { $geo_status = "HTTP_FAIL_$httpCode"; $geo_str = "Failed: $geo_status"; }


En MAMP, si está obteniendo errores al conectarse a hosts HTTPS, simplemente configure esta opción:

curl_setopt ($ ch, CURLOPT_SSLVERSION, 3);

El equivalente por línea de comando es:

curl -k -ssl3 https://www.your-secure-host.com


Es posible que deba configurar la versión SSL y el cifrado correspondiente para $ch :

curl_setopt($ch, CURLOPT_SSLVERSION, 1); curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, ''TLSv1'');

Para conocer los parámetros exactos que puede pasar a CURLOPT_SSLVERSION consulte: http://php.net/manual/en/function.curl-setopt.php

También lo siguiente puede mostrar los errores relacionados con las versiones SSL que se usan para ayudar a encontrar el conflicto de versión exacto que tiene:

$error = curl_error($ch); echo $error;

Más sobre este comando: http://php.net/manual/en/ref.curl.php


Es probable que sea un problema de cortafuegos. Por defecto, Curl intenta usar el puerto 1080, que probablemente no esté abierto en su servidor / enrutador / ISP local.


No se trata de proxy, se trata de cómo usar googleapis.

Agrega CURLOPT_SSL_ on tu código y configúralos en false

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);


Si está detrás de un proxy, podría intentar agregar CURLOPT_PROXY , por ejemplo (asumiendo que su proxy está en el puerto 3128 192.168.1.2):

$ch = curl_init($geocodeURL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_PROXY, "192.168.1.2:3128"); $result = curl_exec($ch);

Espero que esto ayude.