警告:fOpen(GeoIP.dat):无法打开流 - 仅在Wordpress博客页面上,普通页面可以吗?

时间:2014-07-21 07:44:16

标签: php wordpress fopen 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);
switch ($value) {
    case 'prem_no':
        if ($country_code == 'US') { $prem_no = '888-888-8888'; }
        elseif ($country_code == 'AU') { $prem_no = '1900 000 000'; }
        else { $prem_no  = '0906 636 4355'; }
        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;
}
}

这适用于普通页面,并加载上面列出的所有文件,并且交换机正常工作。但是,当我去查看博客文章时,我只得到一个空白页面,其中包含错误消息:

  

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

我无法理解为什么普通网页和博客页面会有所不同。

我知道有单独的PHP文件,但它们都使用相同的函数文件,对吧?

它无法找到的GeoIP.dat,它在上周之前就是在我在文件名之前添加dirname( FILE )之前执行此操作。

我能想到的唯一区别是,我的永久链接有/ blog /%postname%的自定义结构 - / blog是否会以某种方式影响路径?

关于为什么它在博客页面上没有按预期工作的任何想法?

更新:

这是geoip.inc中的相关功能:

function geoip_open($filename, $flags) {
  $gi = new GeoIP;
  $gi->flags = $flags;
  if ($gi->flags & GEOIP_SHARED_MEMORY) {
    $gi->shmid = @shmop_open (GEOIP_SHM_KEY, "a", 0, 0);
  } else {
    $gi->filehandle = fopen($filename,"rb") or die( "Oops! Can not open $filename\n" );
    if ($gi->flags & GEOIP_MEMORY_CACHE) {
      $s_array = fstat($gi->filehandle);
      $gi->memory_buffer = fread($gi->filehandle, $s_array['size']);
    }
  }

  $gi = _setup_segments($gi);
  return $gi;
}
BUMP:有人可以对此有所了解吗?在查看博客页面时,Wordpress似乎正在剥离$ filename的路径。查看普通页面时,包含完整路径。

1 个答案:

答案 0 :(得分:0)

我终于找到了在页面之间创建不同输出的内容。

使用单独的index.php文件生成wordpress博客页面而不是其他页面 - 这取决于我使用的模板的工作方式。

在博客index.php模板上,文件名实际上被硬编码到索引文件中。

删除了,现在只是在两者中都使用了这个功能,一切都很好!

感谢所有人的帮助