Compiling PHP extensions on Snow Leopard with XAMPP
published nov 2 2010
So, you’ve decided to compile a PHP extension from PECL for use with your local XAMPP install. You run the simple steps:
phpize
./configure
make
sudo make install
But when you go to check your phpinfo, the extension hasn’t loaded? First, from the commandline, run PHP, and look for an error like this one (linebreaks added):
$ php
PHP Warning: PHP Startup: Unable to load dynamic library '/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/solr.so' -
dlopen(/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/solr.so, 9): no suitable image found.
Did find: /Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/solr.so: mach-o, but wrong architecture in Unknown on line 0
The important parts here are no suitable image found and mach-o, but wrong architecture. (This example is solr, but it could be anything.) What this means is that it’s finding the file, and it’s a mach-o file, but it’s the wrong architecture. This is because current versions of XAMPP are 32 bit, while Snow Leopard by default will compile things in 64-bit mode.
The fix is simple: tell the compiler to compile for 32-bit instead. Modify the standard compilation steps slightly:
phpize
CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure
make
sudo make install
Note 1: multiple PHP installations
Note, in these instructions I’ve assumed that the php in your path is the same one being used by XAMPP. You can check this by doing:
$ which php
Which should give you something like this:
/Applications/XAMPP/xamppfiles/bin/php
If instead, you get something like /usr/bin/php (this is Apple’s PHP), you need to modify your path variable. You can change it temporarily for the current terminal session as follows:
$ PATH="/Applications/XAMPP/xamppfiles/bin:${PATH}"
This only lasts within a given terminal session (basically within a window/tab), so remember to do it each time you need to compile.
Note 2: developer tools
If there’s is no phpize at /Applications/XAMPP/xamppfiles/bin/, then you need to install the XAMPP developer tools, which you can find from the XAMPP OS X page.
David Thomas Bernal