GeoIPをPHPで使うためにインストール

WEBサイトの訪問者の地域に合わせたコンテンツを表示したい時があったので、ぶらぶら調べていると、GeoIPを使ったらIPから都道府県を調べることができるらしいです。
やってみました。

PHPでもGeoIP関数というのがあるようです。これができたらIPやリモートホストから都道府県を調べるAPIとかできそう。だれか作ってくれないかなぁ。
http://php.net/manual/ja/ref.geoip.php

yumでインストール

# yum install re2c geoip geoip-devel
 
Dependencies Resolved
 
================================================================================
Package            Arch          Version                 Repository       Size
================================================================================
Installing:
geoip              x86_64        1.4.6-1.el6.rf          rpmforge        801 k
geoip-devel        x86_64        1.4.6-1.el6.rf          rpmforge        7.0 k
re2c               x86_64        0.13.5-1.el6.rf         rpmforge        210 k
 
Transaction Summary
================================================================================
Install       3 Package(s)
 
Total download size: 1.0 M
Installed size: 2.8 M
Is this ok [y/N]: y

PHPで使うのでpeclもインストール

# pecl install geoip

/etc/php.d/geoip.ini
を作って
extension=geoip.so
を書く。

都道府県の情報が欲しいので、geoip_record_by_name()を使用。

<?php
print_r( geoip_record_by_name( '210.112.3.110.ap.yournet.ne.jp' ) );
?>

エラーでた\(^o^)/

PHP Warning:  geoip_record_by_name(): Required database not available at /usr/share/GeoIP/GeoIPCity.dat. in /var/www/html/geoip.php on line 2

GeoIPCity.datがないということでDLでリネーム。

cd /usr/share/GeoIP/
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
mv GeoLiteCity.dat GeoIPCity.dat

再度実行したら取得できました/(^o^)\

Array
(
    [continent_code] => AS
    [country_code] => JP
    [country_code3] => JPN
    [country_name] => Japan
    [region] => 32
    [city] => Osaka
    [postal_code] => 
    [latitude] => 35.950000762939
    [longitude] => 137.26669311523
    [dma_code] => 0
    [area_code] => 0
)

regionが都道府県の番号になるわけですね。

$geoip_area_arr =array(
'1'=>"愛知",
'2'=>"秋田",
'3'=>"青森",
'4'=>"千葉",
'5'=>"愛媛",
'6'=>"福井",
'7'=>"福岡",
'8'=>"福島",
'9'=>"岐阜",
'10'=>"群馬",
'11'=>"広島",
'12'=>"北海道",
'13'=>"兵庫",
'14'=>"茨城",
'15'=>"石川",
'16'=>"岩手",
'17'=>"香川",
'18'=>"鹿児島",
'19'=>"神奈川",
'20'=>"高知",
'21'=>"熊本",
'22'=>"京都",
'23'=>"三重",
'24'=>"宮城",
'25'=>"宮崎",
'26'=>"長野",
'27'=>"長崎",
'28'=>"奈良",
'29'=>"新潟",
'30'=>"大分",
'31'=>"岡山",
'32'=>"大阪",
'33'=>"佐賀",
'34'=>"埼玉",
'35'=>"滋賀",
'36'=>"島根",
'37'=>"静岡",
'38'=>"栃木",
'39'=>"徳島",
'40'=>"東京",
'41'=>"鳥取",
'42'=>"富山",
'43'=>"和歌山",
'44'=>"山形",
'45'=>"山口",
'46'=>"山梨",
'47'=>"沖縄"
);

参考
phpでIPアドレスから都道府県名を取得する