2012-01-17 28 views
1

有没有人有任何想法,为什么我的服务器无法读取数据库文件?使用Maxmind GeoLiteCity进行地理定位,无法读取数据库文件

无论我怎么努力,我不断收到同样的错误:

“无法打开GeoLiteCity.dat”

没有任何解释。该文件在那里,我已经尝试上传,以确保它没有损坏。我正在使用纯php模块。这两个文件都在同一个目录中...

我想在wordpress上设置它,可能是问题的一部分?

我的代码只是基本的测试仪:

include("geoip.inc"); 

// read GeoIP database 
$handle = geoip_open("GeoLiteCity.dat", GEOIP_STANDARD); 

// map IP to country 
echo "IP address 62.149.130.132 located in " . geoip_country_name_by_addr($handle, "62.149.130.132") . " (country code " . geoip_country_code_by_addr($handle, "62.149.130.132") . ")"; 

// close database handler 
geoip_close($handle); 

,但它只是不会做它。

+0

什么是文件权限? – 2012-01-17 15:37:12

+0

请检查'is_readable(“GeoLiteCity.dat”)' – DerVO 2012-01-17 15:47:10

回答

2
  • 尝试使用.dat文件的完整路径。
  • 确保.dat文件位于Web服务器进程可以读取的目录中。
  • 确保.dat文件本身可供Web服务器进程读取。
+0

Brill。就是这样。不知道为什么,也许是因为dat文件在插件中并且正在模板中调用(尽管通过函数中的类...因此它正在查找所有其他相关文件)。但是,相对于服务器的路径是一种享受。谢谢! – josh 2012-01-17 17:37:57

1

您是否对文件设置了正确的权限?在linux上,确保文件可以被web服务器用户读取(通常是www-data)。

作为一个快速测试,你可以尝试将文件chmod命令777

是否能解决问题,那么你知道那是你的问题,如果你愿意,你就可以改变以获得最佳的安全权限(即CHOWN它对www数据用户和chmod它适合)

此外,请确保geoip类正在寻找数据库的路径是正确的。这些是我能想到的唯一的两个问题,这会导致这种情况。

0

您是否尝试过使用e.g

文件系统路径之前编辑:

$gi = geoip_open('GeoLiteCity.dat', GEOIP_STANDARD); 

后编辑(FIX):

$gi = geoip_open('/var/www/html/googletitan/GeoLiteCity.dat', GEOIP_STANDARD); 

上述变化的固定同样的错误我。