我正在使用Google GeoCoding服务。我有一个PHP应用程序,它调用Google,并接收JSON数据。调用Google主机的函数挂起,直到超时,但只有当我推送到时才会挂起。
我已经进入服务器并编辑了php.ini,我将“安全模式”改为"off“。
我收到以下错误消息:
消息: file_get_contents(http://maps.googleapis.com/maps/api/geocode/json?address=xYxY&sensor=false):未能打开流:连接超时
这在我的WAMP服务器上很好,但是在实时服务器上失败了。知道为什么吗?
发布于 2012-06-29 04:41:23
我找到了答案。一个星期过去了,现在?我希望其他人能找到这个解决办法。来自GoDaddy的虚拟专用服务器已经启用了ipv6,但是google没有这样的功能。所以告诉Curl强制v4请求,如下所示:
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );这在一定程度上归功于我在博客中发现的以下信息:
http://www.businesscorner.co.uk/disable-ipv6-in-curl-and-php/
发布于 2016-12-08 14:25:28
不只是禁用IPv6,您可以尝试通过一个IP版本连接,然后在第一次尝试失败时切换到另一个版本。这使您的实现对您和远程端的临时路由问题更加健壮。
您可以在file_get_contents()中通过将连接绑定到接口的inet6或in来获得此行为,如果第一次尝试返回失败,则尝试其他地址系列。我为任何感兴趣的人写了更多的路由-健壮和双堆栈。我还向您展示了如何强制连接使用IPv4或IPv6,如果您喜欢沿着这条路线走。
发布于 2012-06-20 07:24:11
使用curl获取外部数据。由于安全风险,许多共享服务器都阻止使用file_get_contents进行外部数据(http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen)。
网上有很多卷曲的例子。
https://stackoverflow.com/questions/11114291
复制相似问题