Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有Maxmind GeoLiteCity的地理位置,无法读取数据库文件_Php_Geolocation - Fatal编程技术网

Php 具有Maxmind GeoLiteCity的地理位置,无法读取数据库文件

Php 具有Maxmind GeoLiteCity的地理位置,无法读取数据库文件,php,geolocation,Php,Geolocation,有人知道为什么我的服务器无法读取数据库文件吗 无论我尝试什么,我总是会遇到同样的错误: '无法打开GeoLiteCity.dat' 没有解释。文件在那里,我试着上传以确保它没有损坏。我使用的是纯php模块。两个文件都在同一目录中 我想在wordpress上设置这个,这可能是问题的一部分吗 我的代码只是基本的测试程序: include("geoip.inc"); // read GeoIP database $handle = geoip_open("GeoLiteCity.dat",

有人知道为什么我的服务器无法读取数据库文件吗

无论我尝试什么,我总是会遇到同样的错误:

'无法打开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);

但是它就是不行。

您对该文件设置了正确的权限吗?在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);