如何在共享服务器上配置 GeoIP?

Posted

技术标签:

【中文标题】如何在共享服务器上配置 GeoIP?【英文标题】:How to configure GeoIP on a shared server? 【发布时间】:2014-09-26 14:56:26 【问题描述】:

我想配置 GeoIP 以根据共享服务器中的国家 IP 地址将域重定向到子域。我创建了一个自定义php.ini 来导入geoip.so,然后在我的index.php 中添加了以下代码:

<?php
    require_once('/home/fuiba/php.ini');
    $gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
    $country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);

    geoip_close($gi);
    $my_countries = 'fr';
    if (strtolower($country) == $my_countries) 
        header('Location: fr.fuiba.org');
    
    $my_countriessss = 'us';
    if (strtolower($country) == $my_countriessss) 
        header('Location: en.fuiba.org');
    
?>

在浏览器中出现此错误:

extension=geoip.so
Fatal error: Call to undefined function geoip_open() in /home/fuiba/public_html/index.php on line 3

GeoIP 安装在服务器中。我在 info.php 上查看过:geoip version 1.0.8.

【问题讨论】:

【参考方案1】:

你不能在 php 脚本中包含一个 php.ini,而且你不需要因为 phpinfo() 返回它已经安装。

为了使 GeoLite 正常工作,您需要做的是首先包含 geoip.inc 文件 include("include/geoip.inc");

如果您还没有它,可以在这里找到它: https://github.com/maxmind/geoip-api-php/blob/master/src/geoip.inc

<?php
   include("include/geoip.inc");
   $country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);

    geoip_close($gi);
    $my_countries = 'fr';
    if (strtolower($country) == $my_countries) 
        header('Location: fr.fuiba.org');
    
    $my_countriessss = 'us';
    if (strtolower($country) == $my_countriessss) 
        header('Location: en.fuiba.org');
    
?>

【讨论】:

谢谢艾萨克。我正在使用共享服务器,所以我不知道include/geoip.inc 的路径,我无法安装任何扩展或插件或更改服务器配置。我问了提供商,但他们建议我更改路径到 /home/fuiba/php.ini,因为他们不能给我路径 geoip.inc。 @Fuiba 就像我的帖子中指定的一样,您可以在此地址下载它github.com/maxmind/geoip-api-php/blob/master/src/geoip.inc 然后放入include/ 文件夹或任何您想要的文件夹,不要忘记将正确的路径放入include @ChrysUgwu $gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);

以上是关于如何在共享服务器上配置 GeoIP?的主要内容,如果未能解决你的问题,请参考以下文章

一文教你如何在Linux系统上搭建samba文件共享服务器

如何使用 Joomla 作为服务器配置跨域资源共享 (CORS)?

怎么组建一个公司的文件共享服务器

linux命令:samb文件共享服务器配置

如何在centos6和centos7上部署nfs共享服务器和客户端

JMS-bridge 配置不共享两个 hornetQ 服务器上的负载