我在Mac OSX上使用MAMP Pro 1.9.4
在phpinfo()
中,我看到curl已启用
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
我的脚本是从谷歌apis地理编码lat long。它在我的主机提供商服务器上在线工作,但不是在localhost上。。为什么?
$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";
}
8条答案
按热度按时间cwdobuhd1#
这不是关于代理,而是关于如何使用googleapis。
添加
CURLOPT_SSL_ on
代码并将其设置为false
a11xaf1n2#
在具有自签名证书的本地服务器(例如XAMPP)上,必须用途:
注意:尽管在测试环境中不安全,但它解决了问题。
请记住为生产服务器激活!!!
nszi6y053#
Curl默认尝试使用端口1080,该端口可能在您的本地主机/路由器/ ISP上未打开。
ikfrs5lh4#
您可能需要为
$ch
设置SSL版本和匹配的密码:有关可以传递给
CURLOPT_SSLVERSION
的确切参数,请参阅:http://php.net/manual/en/function.curl-setopt.php此外,以下内容还可以显示与正在使用的SSL版本相关的错误,以帮助查找您遇到的确切版本冲突:
有关此命令的更多信息:http://php.net/manual/en/ref.curl.php
bkkx9g8r5#
如果您使用代理,则可以尝试添加
CURLOPT_PROXY
,例如(假设您的代理位于192.168.1.2端口3128上):希望这对你有帮助。
dy2hfwbg6#
在MAMP中,如果您在连接到HTTPS主机时遇到错误,只需设置此选项:
如果是,则将其设置为“0”。
通过命令行执行的等效操作为:
curl -k -ssl 3 https://www.your-secure-host.com
9bfwbjaz7#
你真的安装了
curl
二进制文件吗?你可以用PHP安装curl
库,而不用在你的系统上安装curl
二进制文件。进入shell提示符,输入curl
。(如果这是OSX的标准配置,请原谅我的无知--我不是Mac用户)sdnqo3pr8#
如果您的操作系统没有提供cacert.pem文件到您的本地服务器进行SSL证书验证,您可以下载它并在php.ini中指定它
cacert.pem
php.ini: