To install geoip on debian lenny:
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
sudo mkdir -v /usr/share/GeoIP
sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
sudo apt-get install php5-geoip
and then try it in PHP:
print_r(geoip_record_by_name('php.net'));
returns:
Array
(
[country_code] => US
[country_code3] => USA
[country_name] => United States
[region] => CA
[city] => Sunnyvale
[postal_code] => 94089
[latitude] => 37.4249000549
[longitude] => -122.007400513
[dma_code] => 807
[area_code] => 408
)
At the time of this writing, the PECL binaries at http://pecl4win.php.net/ are NOT AVAILABLE.
Specifically, the php_geoip.dll extension is not available in a pre-compiled form for Windoze PHP developers.
There are only two alternative solutions to self-compiling for Windoze (AFAIK):
1) Use the "Pure" PHP version of the GeoIP API from MaxMind available here (http://www.maxmind.com/download/geoip/api/php/). This solution is not really acceptable for production machines because of its slower speed. However, it does work for development.
2) Use the older version of this pre-compiled extension (http://www.gknw.de/php/ext_win32/php-5.2.1_geoip-w32.zip). It worked on my development system using Windoze XP sp2, Apache 2.2.3 and PHP 5.2.10. There are also older versions for PHP 5.1.2 and PHP 5.1.4 in the same directory.
Installation on OSX (Leopard) running MAMP
First you need MacPorts installed and operational:
http://www.macports.org
Use that to install libgeoip. From a terminal window, do:
$ sudo port install libgeoip
This installs the library in /opt/local. Unfortunately the current version of the PECL extension doesn't know to look there, so you'll need to download and compile manually from http://pecl.php.net/package/geoip
Assuming it's in your download directory, extract it:
$ cd ~/Downloads
$ tar -xzf geoip-1.0.3.tgz
$ cd geoip-1.0.3
Now edit the config.m4 file and change the SEARCH_PATH variable, as described in the following bug report:
http://pecl.php.net/bugs/bug.php?id=14795
Now you should be able to compile and install the extension as usual. Make sure you use the phpize from the MAMP package, not the one that ships with OSX:
$ /App*/MAMP/bin/php5/bin/phpize
$ ./configure
$ make
$ sudo make install
If phpize complains that it cannot find files under /Applications/MAMP/bin/php5/include, make sure you have the development version of MAMP installed (link towards the bottom of the MAMP download page).
You're nearly there! The extension will have installed in /usr/lib/php. You need to copy it into your MAMP extension directory:
$ cd /App*/MAMP/bin/php5/lib/php/ext*/no-debug*/
$ mv /usr/lib/php/ext*/no-debug*/geoip.so .
Now edit the php.ini file in /Applications/MAMP/conf/php5/ and add the following line:
extension=geoip.so
Restart your web server and check phpinfo() - the geoip extension should now be listed.
Good luck!
Installation on Gentoo (2008.0) as follows:
emerge dev-libs/geoip
pecl install geoip
Then fetch the databases to /usr/share/GeoIP (wrapped!)
cd /usr/share/GeoIP
wget http://geolite.maxmind.com/download/geoip/ \
database/GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/ \
database/GeoLiteCountry/GeoIP.dat.gz