0

我已经尝试调试这个错误三个多小时了,更改文件名,尝试使用 GeoIP Lite 而不是 GeoCity(后者有一个 27mb 的文件要包含,所以这个想法fopen()有一个最大值)等等。

这是我的结构文件结构:index.php -> include("configuration/config.php") - config.php -> include("inc/geo_text.php") -> geo_text.php

的内容geo_text.php是:

$ip = $_SERVER['REMOTE_ADDR'];
include("GeoIP/geoip.inc");
$gi = geoip_open("GeoIP/GeoIP.dat",GEOIP_STANDARD);
$count_name = geoip_country_name_by_addr($gi, $ip);
geoip_close($gi);

echo($count_name);

现在,如果我访问geo_text.php没有给出错误,并且只是为了确保我放入echo($count_name)geo_text.php返回,它应该返回我的国家。

但是,当我运行config.php它时,它会返回错误:

Warning: fopen(GeoIP/GeoIP.dat) [function.fopen]: failed to open stream: No such file or directory in /nfs/c09/h02/mnt/177978/domains/domain.com/html/labs/final/configuration/inc/GeoIP/geoip.inc on line 399 Can not open GeoIP/GeoIP.dat

有没有人知道为什么会这样?

4

2 回答 2

2

SSH 到您的服务器并运行以下命令(假设它是 Linux 服务器):

cd /nfs/c09/h02/mnt/177978/domains/domain.com/html/labs/final/configuration/inc/GeoIP/
ls -lah

然后将输出粘贴在这里供我们查看。我的猜测是这条路不存在。


这很奇怪。作为测试,尝试将两个地理文件移动到与代码文件相同的目录中,然后相应地更改代码中的路径。


它正在检查 domain.com 中的文件,但您只是 cd 到了 themeplate.com,这就是问题所在。您的代码需要指向themeplate.com 目录。

/nfs/c09/h02/mnt/177978/domains/domain.com / html/labs/final/configuration/inc/GeoIP/ /nfs/c09/h02/mnt/127878/domains/themeplate.com / html /labs/最终/c‌​配置/inc/GeoIP/

于 2011-08-13T22:43:09.720 回答
1

是路径问题。

geoip_open("/absolute/path/to/GeoIP/GeoIP.dat",GEOIP_STANDARD);

应该管用。

于 2011-08-13T22:39:38.383 回答