Как настроить 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 1.0.8.

enter image description here

 2
Author: Mustapha Aoussar, 2014-09-26

1 answers

Вы не можете включить php.ini с php-скриптом, и вам это не нужно, так как phpinfo() возвращает, что он уже установлен.

Что вам нужно сделать, чтобы заставить ГеоЛайт работать, это сначала включить 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');
    }
?>
 3
Author: Isaac, 2014-09-26 15:07:42