【问题标题】:php file_get_contents not working on real server! does work on localhost?php file_get_contents 在真实服务器上不起作用!在本地主机上工作吗?
【发布时间】:2011-07-31 16:32:36
【问题描述】:

大家好, 我在我的 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 设置。

有什么想法吗?

【问题讨论】:

  • 可能是你的服务器的ip被屏蔽了?
  • 您可以fopen() 其他网址,例如 google.com 吗?
  • fopoen 与 google.com 会导致相同的错误消息。没用!

标签: php settings file-get-contents


【解决方案1】:

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

我也建议使用 curl 扩展。

【讨论】:

  • curl 也不起作用!我在我网站上的另一个脚本中使用 curl 请求。 fopen() 也不起作用。
【解决方案2】:

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

这可能有很多原因。例如(如问题的评论)您被禁止或被阻止(因为请求过多)或其他原因。

【讨论】:

  • 但这很奇怪。它如何在我的本地主机上但在真实服务器上工作?为什么它不起作用!网站 geoplugin.net 甚至提供了这个功能来从这个网站获取数据,那为什么不工作呢?
【解决方案3】:
HTTP/1.0 403 Forbidden 

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

【讨论】:

  • 什么是用户代理标头,我该如何实现?
  • 可能另一台服务器上正在运行 mod_security。并防止错误配置的客户端访问数据。
【解决方案4】:

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

【讨论】:

    【解决方案5】:

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

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

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

    【讨论】:

    • 这不是答案,请将其添加为评论。
    猜你喜欢
    • 2015-04-09
    • 2012-01-15
    • 2012-11-17
    • 1970-01-01
    • 2016-08-04
    • 2014-01-15
    • 2013-04-28
    • 1970-01-01
    • 2021-11-12
    相关资源
    最近更新 更多