PHPプロ!TIPS+
IPアドレスから所在地探し
IPアドレスから所在地を調べたいと思ったことはありませんか? 今回は、IPアドレスからその場所がどこなのかPHPで調べる方法をご紹介します。
それには、GeoIPライブラリが必要になります。PHPからこのライブラリの機能を使うには、
- 1.PEARのNet_GeoIPをインストール
- 2.Peclの拡張モジュールをインストール
- 3.Apacheのモジュールとしてインストール
という3種類の方法があります。
今回はPeclの拡張モジュールを使います。対象はLinux系OSになります。
1.GeoIPライブラリををインストール
MaxMind社のホームページ(http://www.maxmind.com/)から、GeoIPライブラリをダウンロードし、インストールします。
cd /usr/local/src wget http://www.maxmind.com/download/geoip/api/c/GeoIP.tar.gz tar xzvf GeoIP.tar.gz cd GeoIP ./configure make sudo make install
2.GeoIPで使うデータを入手
無料で利用できる国データ、町データをダウンロード、解凍し、配置します。(有料版もあります。)
GeoLite Country wget http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz -O /usr/local/src/ gunzip /usr/local/src/GeoIP.dat.gz sudo cp /usr/local/src/GeoIP.dat /usr/local/share/GeoIP.dat
GeoLite City wget http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz -O /usr/local/src/ gunzip /usr/local/src/GeoLiteCity.dat.gz sudo cp /usr/local/src/GeoLiteCity.dat /usr/local/share/GeoIPCity.dat
3.Peclモジュールのインストール、設定
sudo pecl install geoip
を実行します。
この時表示されるgeoip.soの場所を確認して下さい。
php.iniに
extension="php/extensions/no-debug-non-zts-20060613/geoip.so"
というようにgeoip.soのパスを追加し、apacheを再起動します。
4.確認
phpinfoを確認して、geoipの項目が表示されていれば成功です。うまくいかなかった時は、データファイルの場所、php.iniのgeoip.soの指定が間違っている可能性があります。
GeoIP関数には何種類かあります(詳細はPHPマニュアルのGeoIP関数を見て下さい)が、一番使えそうなのがgeoip_record_by_name関数です。
引数にホスト名やIPアドレスを指定すると、国、地域、都市名、緯度、経度などの情報を入手できます。
<?php
//ホワイトハウス
var_dump(geoip_record_by_name('whitehouse.gov'));
//東京タワー
var_dump(geoip_record_by_name('www.tokyotower.co.jp'));
//訪問者がどこから来たか
var_dump(geoip_record_by_name($_SERVER['REMOTE_ADDR']));
?>
国しかわからなかったりということもありますが、興味がある人はぜひ使ってみて下さい。
バックナンバーについて
TIPS-MLは、毎週金曜日に更新され、新しい記事が掲載されます。




ページのトップへ


今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!