2014-09-26 2 views
2

GeoIP으로 공유 서버의 국가 IP 주소에 따라 도메인을 하위 도메인으로 리디렉션하도록 구성하려고합니다.공유 서버에서 GeoIP을 구성하는 방법은 무엇입니까?

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

GeoIP가가에 설치 :이 오류가 브라우저에서

<?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'); 
    } 
?> 

: 나는 가이 코드를 추가 내 index.php에서 다음을 geoip.so 가져올 사용자 정의 php.ini을 만들었습니다 섬기는 사람. info.php에서 확인했습니다 : geoip 버전 1.0.8.

enter image description here

답변

3

당신은 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'); 
    } 
?> 
+0

Isaac에게 감사드립니다. 'include/geoip.inc'에 대한 경로를 모르므로 공유 서버를 사용하고 있으며 확장 또는 플러그인을 설치하거나 서버 구성을 변경할 수 없습니다. 나는 공급자에게 물었다. 그러나 그들은 나에게 경로 geoip.inc를주지 않기 때문에 /home/fuiba/php.ini로 경로를 바꾸라고 제안했다. –

+1

@Fuiba 내 게시물에 지정된 것처럼이 주소에서 다운로드 할 수 있습니다 https://github.com/maxmind/geoip-api-php/blob/master/src/geoip.inc 다음은 'include /'폴더 또는 무엇이든 원하는 경로를'include'에 넣는 것을 잊지 마십시오 – Isaac

+0

대단히 감사합니다 @Isaac –

관련 문제