서버 인터넷

PHP 8.0에 Geoip 설치하기

by 카르마 posted May 04, 2023
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄

이전 서버에서는 아파치모듈로된 GEOIP를 사용했었다. 

이경우는 $_SERVER['GEOIP_COUNTRY_CODE'] 처럼 바로 변수로 나오기는 하지만 설치가 머시기 한데다가

결정적인 것은 새로 서버를 설치하면서 Apache를 mod_mpm_event로 설정했더니

apache_get_modules()가 먹통이 되었다.

하는 수 없이 노선변경

 

이번에는 php pecl 모듈로된 GEOIP를 설치했다.

사용법은 약간 다르지만 dnf로 간단히 설치된다.

 

https://www.php.net/manual/en/geoip.installation.php

위의 링크에 7.4를 기준으로 설명되어있다.

K-1703.png

 

php 버전에 따라서 약간씩 바꿔야한다.

나는 8.0이고 이미 remi 설정은 생략하고 바로...

sudo dnf search geoip 

해보면 php 버전에 따라 종류별로 나온다.

...
php74-php-pecl-geoip.x86_64 : Extension to map IP addresses to geographic places
php80-php-pecl-geoip.x86_64 : Extension to map IP addresses to geographic places
php81-php-pecl-geoip.x86_64 : Extension to map IP addresses to geographic places
php82-php-pecl-geoip.x86_64 : Extension to map IP addresses to geographic places
....

이중 8.0을 골라서... 설치...

sudo dnf install php80-php-pecl-geoip
 

sudo cp /etc/opt/remi/php80/php.d/40-geoip.ini /etc/php.d/
sudo vi /etc/php.d/40-geoip.ini

수정

; extension=geoip.so
extension = /opt/remi/php80/root/usr/lib64/php/modules/geoip.so
 

sudo systemctl restart php-fpm

sudo systemctl restart httpd

 

php -m 해서 geoip 모듈을 확인해보거나

phpinfo에서 geoip 섹션이 나타나면 성공!!!

K-1704.png

https://www.php.net/manual/en/book.geoip.php 에 보면 여러가지 함수가 있으나 쓰는 것은 한가지 밖에 없다.

 

if (extension_loaded('geoip')) $isKoreanIP = geoip_country_code_by_name($_SERVER['REMOTE_ADDR']);
var_dump($isKoreanIP);

 

결과는

string(2) "KR"