Movable Type and Image::Magick

TrackBacks (0) Comments (4)

Movable Type relies on a number of libraries and additional pieces of software to perform certain functions - especially where images are concerned. Thumbnailing and captcha both rely on ImageMagick to perform various feats of graphic trickery.

However, getting ImageMagick playing nicely with Perl and Movable Type is not always straightforward. If you're on a good host, then this work may already have been done for you (leave a comment if you're with a host that has this sorted out), but even good hosts don't always get this right, and if you're on a dedicated server, this is probably something you'll have to do yourself - as I've just done with my MediaTemple (dv) server.

I'm documenting the steps I took to get this working - hopefully it will be useful to someone else (and me in the future, the next time I have to do this). Please note that the steps require that you have root access, and are for dedicated servers (or dedicated virtual servers), and you need to be running Linux - I'm using CentOS, but I'm pretty sure this works for any distro.

Ok - so first up, browse to mt-check.cgi and see whether Image::Magick is already there. It's in the same directory as mt.cgi, so just replace with mt-check.cgi in your normal URL for MT.

If you're lucky, and it's already there, then you're done. Congrats, and enjoy !

If you're not lucky, then you'll see somethinng like "Image::Magick. Your server does not have Image::Magick installed...". Time to roll up your sleeves.

  • Get the latest version of ImageMagick (6.3.6 at time of writing). You can get it from here (ftp link to imagemagick.tar.gz). If you're rabidly anti-ftp, then go to this page and follow links until you get what you want.
  • Ungzip and untar it (tar -zxvf ImageMagick.tar.gz), and change to the source directory (cd ImageMagick-6.3.6).
  • Build imagemagick

./configure
make
make install

  • This will build and install the main ImageMagick binaries and libraries
  • Now we've got to build PerlMagick - the Perl interface to ImageMagick (which is what Movable Type uses to communicate with ImageMagick). The PerlMagick library should be below the ImageMagick folder you're in now.

cd PerlMagick
Perl Makefile.PL
make
make install

  • In an ideal world, we'd be done now. Unfortunately, it seems as if there are often some problems with where ImageMagick puts its libraries such that PerlMagick can't find them.
  • Test by running mt-check.cgi again. If it's working, congrats again - if not, read on.
  • Take a look at the error log (probably something like /var/log/httpd/error.log) and look for lines mentioning ImageMagick - chances are you might see something like this

[error] Can't load '/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Image/Magick/Magick.so' for module Image::Magick: libMagick.so.10: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pm line 230.\n at /var/www/vhosts/xxx.xxx.com/httpdocs/test/perl/image_test.pl line 9\nCompilation failed in require at /var/www/vhosts/xxx.xxx.com/httpdocs/test

  • Basically this means that PerlMagick can't find the ImageMagick libraries it needs. To resolve this issue:
    • Edit /etc/ld.so.conf and add /usr/local/lib below the last line.
    • Run ldconfig
    • You should now be done ! check by running mt-check.cgi again or by running this perl -MImage::Magick -e 1

 

  • If it's still not working, you can try this kludgier way:
    • Check what libraries ImageMagic.so needs by running the following (you may need to change the path to match what you're seeing in your own error.log file)

      ldd /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Image/Magick/Magick.so

    • This might give you something like this:

      libMagick.so.10 => (missing)
      libWand.so.10 => (missing)
      libc.so.6 => /lib/tls/libc.so.6 (0xb7ca4000)
      libtiff.so.3 => /usr/lib/libtiff.so.3 (0xb7c57000)
      libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0xb7c39000)
      libbz2.so.1 => /usr/lib/libbz2.so.1 (0xb7c28000)
      libz.so.1 => /usr/lib/libz.so.1 (0xb7c18000)
      libm.so.6 => /lib/tls/libm.so.6 (0xb7bf4000)
      libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7be2000)
      libdl.so.2 => /lib/libdl.so.2 (0xb7bde000)
      /lib/ld-linux.so.2 (0xb7fea000)

    • OK - so there are 2 libraries - libMagick.so.10 and libWand.so.10 that can't be found. The chances are that PerlMagick is expecting to find these libraries in /usr/lib, instead of /usr/local/lib. So let's put them there:

      ln -s /usr/local/lib/libMagick.so.10 /usr/lib/libMagick.so.10
      ln -s /usr/local/lib/libWand.so.10  /usr/lib/libWand.so.10

    • And that should be it. Run mt-check.cgi again, and you should now see that MT finally agrees that ImageMagick has been installed.

[Updated with a better initial method - editing /ld.so.conf which removes the need for the symlinks]

Good luck !!

Technorati Tags: , , , ,

0 TrackBacks

Listed below are links to blogs that reference this entry: Movable Type and Image::Magick.

TrackBack URL for this entry: http://www.digitalquery.com/cgi-bin/mtcs/mt-tb.cgi/6

4 Comments

Tremendously helpful, thanks. Hit a dead-end while trying to enable Image::Magick on my Media Temple-hosted (dv) 3.0 server. Started getting the following errors in the Apache error_log file:

[error] Deep recursion on subroutine "Image::Magick::AUTOLOAD" at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/Image/Magick.pm line 42.
[error] Out of memory!

Your recommended steps, involving editing the /etc/ld.so.conf file, did the trick.

Many thanks!

Thanks. The /etc/ld.so.conf fixed me right up on (mt)

This article saved me a huge headache. Thank you so much. the /etc/ld.so.conf fixed it for me (hosted on DV at MediaTemple).

Unfortunately that isn't the end of my problems. For some reason MT isn't seeing any of the following modules either:


Mail::Sendmail
XML::Atom
IO::Compress::Gzip
IO::Uncompress::Gunzip
Archive::Zip

Clearly you have better things to do than play technical support for MT installations on MediaTemple, but wondered if you had anything off the top of your head to tell me... ?

Cheers.

Thank you. This fixed everything right up. My server was crashing periodically and could not figure out how to fix the AUTOLOAD module problem, causing a high load on my server.

Your suggestion fixed it right up.

Thanks.

Leave a comment

Recent Entries

RSS isn't dead.
Marshal Kirkpatrick over at RWW proclaims that Enterprise RSS has died. Taking a closer look at the post reveals some…
Social Networks as a retention mechanism
Thought this was very interesting. Shel Holtz being interviewed by Ron ShewchukQuestion #2: Which company do you think does internal…
iMT
Time to dust the cobwebs off my blog and get it going again. The iPhone plugin for MT is pretty…