I needed to use ImageMagick with PHP on Mac OS X.
Using homebrew I added ImageMagick to my system as follow :
$ brew install imagemagick
And then, add the PHP extension with PECL :
sudo pecl install imagick
Bad luck…
cc -I. -I/private/tmp/pear/temp/imagick -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-rootSqBVOk/imagick-3.0.1/include -I/private/tmp/pear/temp/pear-build-rootSqBVOk/imagick-3.0.1/main -I/private/tmp/pear/temp/imagick -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /private/tmp/pear/temp/imagick/imagick_class.c -fno-common -DPIC -o .libs/imagick_class.o In file included from /private/tmp/pear/temp/imagick/imagick_class.c:21: /private/tmp/pear/temp/imagick/php_imagick.h:49:12: fatal error: 'wand/MagickWand.h' file not found # include <wand/MagickWand.h>
configure found ImageMagick header :
checking for MagickWand.h header file... found in /usr/local/Cellar/imagemagick/6.8.0-10/include/ImageMagick/wand/MagickWand.h
but couldn’t compile the source as the ‘wand/MagickWand.h’ include failed.
To solve it, just tell the C compiler where to find this header with the C_INCLUDE_PATH environment variable :
sudo C_INCLUDE_PATH=/usr/local/Cellar/imagemagick/6.8.0-10/include/ImageMagick pecl install imagick
and it worked!
You should add "extension=imagick.so" to php.ini
I restarted Apache and see what happened :
dyld: lazy symbol binding failed: Symbol not found: _MagickWandGenesis Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/imagick.so Expected in: flat namespace dyld: Symbol not found: _MagickWandGenesis Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/imagick.so Expected in: flat namespace
Bad luck!
So I manually compiled extension, following steps here and it worked fine this time…
Basically, the transcript is :
$ cd /usr/local/src/ $ wget http://pecl.php.net/get/imagick-3.0.1.tgz $ tar -xzvf imagick-3.0.1.tgz $ cd imagick-3.0.1 $ phpize $ MACOSX_DEPLOYMENT_TARGET=10.6 $ CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" $ CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" $ CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" $ LDFLAGS="-arch i386 -arch x86_64 -bind_at_load" $ export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET $ echo $CFLAGS $ ./configure --with-imagick=/usr/local//Cellar/imagemagick/6.8.0-10 $ make $ sudo make install $ sudo vim /etc/php.ini $ sudo apachectl restart
Extension with PECL compilation :
$ file /usr/lib/php/extensions/no-debug-non-zts-20090626/imagick.so /usr/lib/php/extensions/no-debug-non-zts-20090626/imagick.so: Mach-O 64-bit bundle x86_64
Extension with manual compilation and corrects flags :
$ file /usr/lib/php/extensions/no-debug-non-zts-20090626/imagick.so /usr/lib/php/extensions/no-debug-non-zts-20090626/imagick.so: Mach-O universal binary with 2 architectures /usr/lib/php/extensions/no-debug-non-zts-20090626/imagick.so (for architecture i386): Mach-O bundle i386 /usr/lib/php/extensions/no-debug-non-zts-20090626/imagick.so (for architecture x86_64): Mach-O 64-bit bundle x86_64