php file_get_contents无法在真实服务器上运行!在localhost上工作吗?

时间:2011-04-07 13:00:56

标签: php settings file-get-contents

嘿伙计们, 我在我的Mac上开发了一个关于我本地apache设置的网站。我正在对外国域名使用两个请求。一个人去geoplugin.net获取当前的地理位置。 这在我的本地设置上工作得很好。但是,当我将文件传输到我的真实服务器时,网站会打印以下内容:

  

警告:   的file_get_contents(http://www.geoplugin.net/php.gp?ip=185.43.32.341)   [function.file-get-contents]:失败   打开流:HTTP请求失败!   HTTP / 1.0 403禁止进入   /home/.sites/74/site484/web/testsite/wp-content/themes/test/header.php   在第241行

我能在这做什么?我做错了什么?

此外,我在我的网站上使用curl请求,但也没有检索数据。两者都适用于我当地的mamp设置。

任何想法?

5 个答案:

答案 0 :(得分:1)

服务器以“403 FORBIDDEN”状态代码响应。所以file_get_contents()工作正常,但您尝试访问的服务器(或代理服务器之间的服务器)不允许它。

这可能有很多原因。例如(就像问题的评论一样)你被禁止或被阻止(因为要求很多),或者什么。

答案 1 :(得分:1)

HTTP/1.0 403 Forbidden 

表示您不允许访问此文件!尝试添加用户代理标头。

答案 2 :(得分:1)

您需要在geoplugin.com上创建一个帐户并订阅您的域以无限制地使用Web服务,然后您将停止接收de 403禁止错误。不要担心费用,这是免费服务,我在三个网站上使用它。

答案 3 :(得分:0)

尝试对查询字符串进行urlencode。

我也建议使用curl扩展名。

答案 4 :(得分:0)

这是因为geoPlugin每分钟限制为120次。 http://www.geoplugin.com/premium

因此,任何基于此解决方案的网站功能都可能会突然受损。

我建议同时使用www.geoplugin.net/json.gp?ip={ip}和freegeoip.net/json/ {ip}。并检查第一个是否返回null(表示已达到限制)然后使用另一个。