首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >file_get_contents挂起

file_get_contents挂起
EN

Stack Overflow用户
提问于 2012-06-20 06:53:03
回答 4查看 5.3K关注 0票数 7

我正在使用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服务器上很好,但是在实时服务器上失败了。知道为什么吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-29 04:41:23

我找到了答案。一个星期过去了,现在?我希望其他人能找到这个解决办法。来自GoDaddy的虚拟专用服务器已经启用了ipv6,但是google没有这样的功能。所以告诉Curl强制v4请求,如下所示:

代码语言:javascript
复制
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

这在一定程度上归功于我在博客中发现的以下信息:

http://www.businesscorner.co.uk/disable-ipv6-in-curl-and-php/

票数 10
EN

Stack Overflow用户

发布于 2016-12-08 14:25:28

不只是禁用IPv6,您可以尝试通过一个IP版本连接,然后在第一次尝试失败时切换到另一个版本。这使您的实现对您和远程端的临时路由问题更加健壮。

您可以在file_get_contents()中通过将连接绑定到接口的inet6或in来获得此行为,如果第一次尝试返回失败,则尝试其他地址系列。我为任何感兴趣的人写了更多的路由-健壮和双堆栈。我还向您展示了如何强制连接使用IPv4或IPv6,如果您喜欢沿着这条路线走。

票数 3
EN

Stack Overflow用户

发布于 2012-06-20 07:24:11

使用curl获取外部数据。由于安全风险,许多共享服务器都阻止使用file_get_contents进行外部数据(http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen)。

网上有很多卷曲的例子。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11114291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档