php 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 请求,它也不会检索数据。两者在我的本地映射设置上都能正常工作。
有什么想法吗?
hey guys,
i developed a website on my local apache setup on my mac. I'm using two requests to foreign domains. One goes out to geoplugin.net to get the current geolocation.
This works just fine on my local setup. However when I transfer the files to my real server the website prints the following:
Warning:
file_get_contents(http://www.geoplugin.net/php.gp?ip=185.43.32.341)
[function.file-get-contents]: failed
to open stream: HTTP request failed!
HTTP/1.0 403 Forbidden in
/home/.sites/74/site484/web/testsite/wp-content/themes/test/header.php
on line 241
what can I do here? What am I doing wrong?
Furthermore I'm using a curl request on my website which doesn't retrieve data as well. Both works fine on my local mamp setup.
any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
服务器响应“403 FORBIDDEN”状态代码。所以
file_get_contents()
工作正常,但您尝试访问的服务器(或代理或介于两者之间的东西)不允许这样做。这可能有很多原因。例如(就像问题的评论)你被禁止,或被阻止(因为请求太多),或者其他什么。
The server responds with an "403 FORBIDDEN" status code. So
file_get_contents()
works fine, but the server you are trying to access (or a proxy or something in between) dont allow it.This can have many reasons. For example (like the comment of the question) you are banned, or blocked (because of to much requests), or something.
意味着您无权访问该文件!尝试添加用户代理标头。
means you are not allowed to access this files! Try to add an user agent header.
您需要在 geoplugin.com 创建一个帐户并订阅您的域才能无限制地使用网络服务,然后您将不再收到 403 禁止错误。不用担心费用,这是一项免费服务,我在三个网站上使用它。
You need to create an account at geoplugin.com and subscribe your domain to use the webservice without limitation, then you will stop to receive de 403 forbidden error. Don't worry about costs, it's a free service, i'm using it in three sites.
尝试对查询字符串进行 urlencode。
我还建议使用curl 扩展。
try to urlencode the query string.
also I would recommend using curl extension.
这是因为 geoPlugin 限制为每分钟 120 次查找。
http://www.geoplugin.com/premium
因此,任何基于此解决方案的网站功能都可以突然损坏。
我建议同时使用 www.geoplugin.net/json.gp?ip={ip} 和 freegeoip.net/json/{ip} 。并检查第一个是否返回 null(意味着已达到限制),然后使用另一个。
That is because geoPlugin is limited to 120 lookups per minute.
http://www.geoplugin.com/premium
So, any web-site feature based on this solution can be damaged suddenly.
I would recommend to use both www.geoplugin.net/json.gp?ip={ip} and freegeoip.net/json/{ip} . And check if first one returns null (means that limit already reached) then use another one.