[DTI]ServersMan@VPS:PHP GeoIP のインストール

PHPで IPアドレスから国や地域を取得できるように、Geolocation関連の GeoIP ライブラリおよび、PECL::geoip をインストールします。(2012/10/20作成)

国 jill111 / Pixabay

PECL::Package::geoip
http://pecl.php.net/package/geoip

0.環境

[crayon]
$ php -v
PHP 5.3.10 (cli) (built: Feb 4 2012 07:16:03)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
[/crayon]

1.GeoIP C ライブラリインストール

[crayon]
$ wget http://www.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
$ tar zxvf GeoIP.tar.gz
$ cd GeoIP-1.4.8
$ ./configure
$ make
$ sudo make install
[/crayon]

【参考】 ライブラリ依存関係の解決

[crayon]
Libtool library used but `LIBTOOL’ is undefined -> yum install libtool
autoreconf -> yum install autoconf
aclocal -> yum install automake
[/crayon]

2.GeoLite Country, GeoLite City バイナリデータを配置

[crayon]
$ wget http://www.maxmind.com/download/geoip/database/GeoIPv6.dat.gz
$ wget http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
$ gzip -d GeoIPv6.dat.gz
$ gzip -d GeoLiteCity.dat.gz
$ sudo cp GeoIPv6.dat /usr/local/share/GeoIP/
$ sudo cp GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat
[/crayon]

※RPMで「GeoIP」をインストールした場合、「geoip_record_by_name()」を実行時下記のエラーとなります。その場合は「GeoIPCity.dat」を「/usr/share/GeoIP」配下にシンボリックリンクします。
[crayon]
$ php a.php
PHP Warning: geoip_record_by_name(): Required database not available at /usr/share/GeoIP/GeoIPCity.dat. in /tmp/a.php on line 2
$ sudo ln -s /usr/local/share/GeoIP/GeoIPCity.dat /usr/share/GeoIP/GeoIPCity.dat
[/crayon]

3.PECL::Package::geoip インストール

[crayon]
$ sudo pecl install geoip
You should add “extension=geoip.so” to php.ini
extension=geoip.so
$ sudo /etc/init.d/httpd restart
[/crayon]

4.使い方

$ cat a.php
[crayon]
AS
[country_code] => JP
[country_code3] => JPN
[country_name] => Japan
[region] => 40
[city] => Tokyo
[postal_code] =>
[latitude] => 35.685001373291
[longitude] => 139.75140380859
[dma_code] => 0
[area_code] => 0
)
[/crayon]

以上

About yoshimasa

埼玉県さいたま市在住、2男3女のパパです。Linux系の技術情報を中心にまとめています。1978年2月生まれ。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください