http://www.php.net/releases/ http://pecl.php.net/package/imagick/ ====== Building extra php version 5.0.4 with mysql, libpdf and imagick ====== ===== Story ===== Some private company I work for have an expensive licence (EUR 800) for libpdf 6.0.4 working only with php 5.0.3 (according to documentation). Because it is compiled against PHP_API 20041030 otherwise throws this error: Module compiled with module API=20041030, debug=0, thread-safety=0 PHP 5.0.4 works also fine. So I've decided to register another suffix to compile .phppdf with php running as cgi ''/usr/lib/cgi-bin/php-cgi-5.0.4''. ===== Download ===== * ImageMagick-6.2.9 ftp://ftp.nluug.nl/pub/ImageMagick/ * php 5.0.4 http://www.php.net/releases/ * imagick 0.9.13 http://pecl.php.net/package/imagick/ ===== Compiling it all together ===== ==== Compiling ImageMagick ==== wget ftp://ftp.nluug.nl/pub/ImageMagick/ImageMagick-6.2.9-8.tar.bz2 tar -xjf ImageMagick-6.2.9-8.tar.bz2 cd ImageMagick-6.2.9 ./configure --with-x make make install **note:** That ''--with-x'' must be there, because imagick.c (imagick.h to be precise) defines structure //imagick_t// with //draw_context// variable. This item's type depends on version. Once it is //DrawContext// and then it is //DrawingWand*//. **note:** Or you can change the type between this two DrawingWand* draw_context ; /*new api */ DrawContext draw_context ; **note:** If you run into compiling problems with //strcpy// or //atexit//, this is because of gcc 4.3. It is the new gcc's design/api problem, nothing serious. **shit:** Magick++/lib/Image.cpp:3915: error: 'atexit' was not declared in this scope add this line **fix:** #include ==== Adding imagick into PHP's tree ==== tar -xzf php-5.0.4.tar.gz cd php-5.0.4/ext wget http://pecl.php.net/get/imagick-0.9.13.tgz tar -xzf imagick-0.9.13.tgz mv imagick-0.9.13 imagick ==== Compiling PHP ==== rm configure ./buildconf --force Here you can check "./configure --help" if it hase --with-imagick option ./configure --with-imagick --with-mysql make ==== Extracting the php-cgi binary ==== cp php-5.0.4/sapi/cgi/php /usr/lib/cgi-bin/php-cgi-5.0.4 ===== And Apache ===== So here is a short debian oriented how-to register new .phppdf suffix to get compiled by /usr/lib/cgi-bin/php-cgi-5.0.4. * a2enmod action * mod-available/phppdf.conf AddHandler php-script .phppdf .phppdf Action php-script /cgi-bin/php-cgi-5.0.4 * ln -s sites-available/phppdf.conf sites-enabled/phppdf.conf * /etc/init.d/apache2 restart That's all!