PHP i GeoIP od MaxMind w wersji Lite

Opublikowano: 20.06.2010 | Kategoria: Apple, Programowanie | Tagi: , | Brak komentarzy »
geoip_record_by_name(): Required database not available at /opt/local/share/GeoIP/GeoIPCity.dat

Oto co mnie przywitało po instalacji modułu GeoIP dla PHP na Snow Leopardzie i wywołaniu kodu:

$record = geoip_record_by_name('www.zak.lodz.pl');
if ($record) print_r($record);
else echo 'error';

Brak odpowiedniej bazy… Ściągamy zatem bazę GeoIP miast w wersji Lite i tworzymy odpowiednie pliki.

$ cd; mkdir temp; cd temp;
$ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
$ gunzip GeoLiteCity.dat.gz
$ sudo mv GeoLiteCity.dat /opt/local/share/GeoIP/GeoIPCity.dat

GeoIP, PECL, Zend Server z PHP 5.3 i SnowLeopard

Opublikowano: 19.06.2010 | Kategoria: Apple, Programowanie | Tagi: , , | Brak komentarzy »

Potrzebowałem na maszynie developerskiej (z jabłkiem na obudowie) rozpoznawania lokalizacji klientów na podstawie adresów IP. Rozwiązanie manualowe zakończyło się błędem:

$ sudo /usr/local/zend/bin/pecl install geoip
(...)
configure: error: Please reinstall the geoip distribution
ERROR: `/private/tmp/pear/temp/geoip/configure' failed

Próba instalacji przez PEAR, skierowała mnie na nowo do PECLa. Wniosek prosty – czegoś brak. Poszukałem rozwiązania w mac portach:

$ port search geoip
libgeoip @1.4.6 (devel, net)
    Gets country code by IP address

ISTOTNA UWAGA. Ponieważ Zend Server na MacOSX jest tylko w wersji 32 bit, musimy na chwilę namieszać, bo inaczej Zend nie łyknie nowego modułu, ze względu na niezgodność architektury (PHP będzie pluło ostrzeżeniami: PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/zend/lib/php_extensions/geoip.so’ – dlopen(/usr/local/zend/lib/php_extensions/geoip.so, 9): no suitable image found. Did find: /usr/local/zend/lib/php_extensions/geoip.so: mach-o, but wrong architecture in Unknown on line 0). W pliku /opt/local/etc/macports/macports.conf musimy odkomentować build_arch i386:

# CPU architecture to compile for. Defaults to i386 or ppc on Mac OS X 10.5
# and earlier, depending on the CPU type detected at runtime. On Mac OS X 10.6
# the default is x86_64 if the CPU supports it, i386 otherwise.
build_arch                      i386

Zapisujemy zmiany i instalujemy port z libgeoip.

$ sudo port install geoip
--->  Computing dependencies for libgeoip
--->  Fetching libgeoip
--->  Attempting to fetch GeoIP-1.4.6.tar.gz from http://lil.fr.distfiles.macports.org/libgeoip
--->  Verifying checksum(s) for libgeoip
--->  Extracting libgeoip
--->  Configuring libgeoip
--->  Building libgeoip
--->  Staging libgeoip into destroot
--->  Installing libgeoip @1.4.6_0
--->  Activating libgeoip @1.4.6_0
--->  Cleaning libgeoip

$ geoiplookup technicznie.miastofabryk.pl
GeoIP Country Edition: NL, Netherlands

$ file /opt/local/bin/geoiplookup
/opt/local/bin/geoiplookup: Mach-O executable i386

Śmiga. I jest w wersji 32 bitowej. Wstawiamy ponownie komentarz w /opt/local/etc/macports/macports.conf:

# build_arch                      i386

Wracamy do PECLa… ściągamy paczkę i ją rozpakowujemy:

$ cd; mkdir temp; cd temp
$ /usr/local/zend/bin/pecl download geoip
downloading geoip-1.0.7.tgz ...
Starting to download geoip-1.0.7.tgz (9,416 bytes)
.....done: 9,416 bytes
File /Users/skar/temp/geoip-1.0.7.tgz downloaded
$ tar xvf geoip-1.0.7.tgz
(...)
$ cd geoip-1.0.7

Teraz czas na konfigurację i kompilację modułu geoip dla PHP:

$ export "CFLAGS=-arch i386"
$ /usr/local/zend/bin/phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

$ ./configure --with-php-config=/usr/local/zend/bin/php-config --disable-shared
(...)
$ make
(...)
$ sudo make install
Password:
Installing shared extensions:     /usr/local/zend/lib/php_extensions/

W katalogu /usr/local/zend/lib/php_extensions/ powinien pojawić się plik geoip.so. Jeżeli plik istnieje, to wszystko przebiegło prawidłowo. Odpalamy teraz konfigurację Zend Server (http://localhost:10081/ZendServer) i wchodzimy w Server Setup/Extensions i klikamy Turn On przy geoip. Restartujemy PHP. Powinno działać.


Lexmark X7675 i MacOSX Snow Leopard

Opublikowano: 01.06.2010 | Kategoria: Apple, Hardware | Tagi: , | Brak komentarzy »

Sterowniki z płytki nie działały. Trzeba było ściągnąć nowsze ze strony Lexmarka. W wersji polskiej nie ma sterowników na inne systemy niż ze stajni Microsoft, więc należy wybrać na stronie z plikami do pobrania język angielski. Następnie wybieramy plik Lexmark X7600 Series Software support for Mac OS X 10.6.

Instalujemy ściągnięty plik, ale na tym nie koniec zabawy. Instalator mówi nam co prawda, że wszystko poszło bez problemu, ale podczas drukowania system krzyczy, że brakuje mu szablonu kolorów – Color table is missing. You must uninstall and reinstall the printer software.

Naprawiamy:

sudo cp -R /Library/Printers/Lexmark/2008/.Resources/* /Library/Printers/Lexmark/Drivers/.Resources/