Php 具有Maxmind GeoLiteCity的地理位置,无法读取数据库文件
有人知道为什么我的服务器无法读取数据库文件吗 无论我尝试什么,我总是会遇到同样的错误: '无法打开GeoLiteCity.dat' 没有解释。文件在那里,我试着上传以确保它没有损坏。我使用的是纯php模块。两个文件都在同一目录中 我想在wordpress上设置这个,这可能是问题的一部分吗 我的代码只是基本的测试程序:Php 具有Maxmind GeoLiteCity的地理位置,无法读取数据库文件,php,geolocation,Php,Geolocation,有人知道为什么我的服务器无法读取数据库文件吗 无论我尝试什么,我总是会遇到同样的错误: '无法打开GeoLiteCity.dat' 没有解释。文件在那里,我试着上传以确保它没有损坏。我使用的是纯php模块。两个文件都在同一目录中 我想在wordpress上设置这个,这可能是问题的一部分吗 我的代码只是基本的测试程序: include("geoip.inc"); // read GeoIP database $handle = geoip_open("GeoLiteCity.dat",
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);
但是它就是不行。您对该文件设置了正确的权限吗?在linux上,确保Web服务器用户可以读取文件(通常是www数据) 作为快速测试,您可以尝试将文件chmod到777 如果这解决了问题,那么您知道这是您的问题,如果您愿意,您可以更改权限以获得最佳安全性(即,将其发送给www数据用户,并根据需要对其进行chmod) 还要确保geoip类查找数据库的路径是正确的。这是我能想到的唯一两个会导致这种情况的问题
- 尝试使用.dat文件的完整路径
- 确保.dat文件位于web服务器进程可以读取的目录中
- 确保web服务器进程可以读取.dat文件本身
$gi = geoip_open('GeoLiteCity.dat', GEOIP_STANDARD);
编辑(修复)后:
上述更改为我修复了相同的错误。文件权限是什么?请检查
是否可读(“GeoLiteCity.dat”)
Brill。就这样。不知道为什么,可能是因为dat文件在插件中,并且在模板中被调用(虽然是通过函数中的类…所以它正在查找所有其他相关文件)。但是,是的,相对于服务器的路径起了作用。谢谢
$gi = geoip_open('/var/www/html/googletitan/GeoLiteCity.dat', GEOIP_STANDARD);