无法打开geoip.dat文件。 '无法打开流'即使文件存在

时间:2014-07-18 14:05:55

标签: php wordpress geoip

我无法理解为什么我被告知文件不存在,当它存在时。

我的wordpress主题中有一个函数,如下所示:

function variable($value) {
$country_code = '';
require_once("geoip.inc");
$gi = geoip_open(dirname(FILE)."GeoIP.dat",GEOIP_STANDARD);
$country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);

我一直在尝试使用geoip_open的不同变体来获取代码来查看文件,但我在前端收到了这个:

  

(!)警告:fopen(.geoip.dat):无法打开流:第314行的c:\ wamp \ www \ clairvoyant \ wp-content \ themes \ clairvoyant \ geoip.inc中没有此类文件或目录

它给出的那条道路是完全正确的。

我也尝试取出dirname(FILE)并且只有文件名,但它显示的是同样的错误。

我确实在这里阅读了另一篇关于它的帖子,解决方案是因为它需要一个绝对路径,但我怎么能在本地机器上做到这一点,它会在它生效的时候工作? (目前处于WAMP环境中)

更新: 这是我的全部功能:

function variable($value) {
$country_code = '';
require_once("geoip.inc");
$gi = geoip_open(dirname(__FILE__)."/GeoIP.dat",GEOIP_STANDARD);
$country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
switch ($value) {
    case 'prem_no':
        if ($country_code == 'US') { $prem_no = '888-888-8888'; }
        elseif ($country_code == 'AU') { $prem_no = '1900 000 000'; }
        elseif ($country_code == 'GB') { $prem_no = '0906 636 4355'; }
        else { $prem_no  = ''; }
        return $prem_no;
        break;


    case 'prem_rate':
        if ($country_code == 'US') { $prem_rate = '$3.50'; }
        elseif ($country_code == 'AUS') { $prem_rate = '$3.96'; } 
        else { $prem_rate  = '£1.53'; }
        return $prem_rate;
        break;

    case 'local_no':
        if ($country_code == 'US') { $local_no = '755-555-5555'; }
        elseif ($country_code == 'AUS') { $local_no = '1800 000 000'; } 
        else { $local_no  = '0207 111 6311'; }
        return $local_no;
        break;


    case 'sms_no':
        if($country_code == 'AUS') { $sms_no = '1977 1977'; } 
        else { $sms_no  = '78887'; }
        return $sms_no;
        break;

    case 'sms_rate':
        if($country_code == 'AUS') { $sms_rate = '25c'; } 
        else { $sms_rate  = '£1.50'; }
        return $sms_rate;
        break;

    case 'helpline':
        if($country_code == 'US') { $helpline = '700-777-7777'; }
        elseif ($country_code == 'AUS') { $helpline = '1700 000 000'; }
        else { $helpline  = '0207 111 6210'; }
        return $helpline;
        break;

    default:
        break;
}
}

第一个案例包括GB作为测试(因为我意识到它对我来说是正确的,因为所有事情都经历了'其他')。插入GB后,我再次获得空白(以及echo $ country_code显示空白)。

1 个答案:

答案 0 :(得分:1)

dirname(FILE)."GeoIP.dat"必须为dirname(__FILE__)."/GeoIP.dat"