MaxMind GeoIP API:fseek() [function.fseek]:流不支持在 geoip.inc 中查找
Posted
技术标签:
【中文标题】MaxMind GeoIP API:fseek() [function.fseek]:流不支持在 geoip.inc 中查找【英文标题】:MaxMind GeoIP API: fseek() [function.fseek]: stream does not support seeking in geoip.inc 【发布时间】:2013-11-16 19:25:12 【问题描述】:我正在使用 MaxMind 的 GeoIP 服务:
<?php
include("geoip/geoip.inc");
include("geoip/geoipcity.inc");
include('geoip/geoipregionvars.php');
$gi = geoip_open("http://watchandrepeat.com/GeoLiteCity.dat", GEOIP_STANDARD);
?>
原来 geopi_open API 使用 fseek,它在我的网络服务器上失败了:
Warning: fseek() [function.fseek]: stream does not support seeking in /hsphere/local/home/yudaluz/watchandrepeat.com/geoip/geoip.inc on line 319
在撰写本文时,您可以在这里看到它失败了:http://watchandrepeat.com/indextest.php
我正在使用 IxWebHosting,我询问了他们的客户支持是否可以在他们的 apache 服务器上打开流搜索,因为它在我的本地主机上运行良好。他们这样说: "很抱歉,在我们的共享服务器上无法开启这样的功能。我建议您使用我们的 VPS 或云托管方案。您将可以根据需要配置自己的服务器。"
有什么解决办法吗?
【问题讨论】:
我是认真的,我真的需要一个特殊的托管服务来读取文件吗? 我也厌倦了 GEOIP_SHARED_MEMORY 模式或 GEOIP_MEMORY_CACHE 模式作为 geoip_open 的选项标志 - 但这些并没有多大帮助。 【参考方案1】:来自PHP manual:
"不是所有的流都支持搜索。对于那些不支持的 搜索,从当前位置向前搜索是通过 读取和丢弃数据;其他形式的寻求将失败。”
HTTP
是不支持搜索的流之一。这正是您的错误消息所指出的,stream [HTTP] does not support seeking
。将您的数据库视为本地数据库并摆脱 URL,它应该可以工作。
【讨论】:
以上是关于MaxMind GeoIP API:fseek() [function.fseek]:流不支持在 geoip.inc 中查找的主要内容,如果未能解决你的问题,请参考以下文章
Java 编译 maxmind geoip LookupService 类的问题
无法下载 GeoIP 数据 - Nginx >> GeoIP - 404 错误 - 正在解决 geolite.maxmind.com (geolite.maxmind.com)