Imagick mit Zend Server CE unter Windows
Heute installierte ich auf meinem Entwicklungsrechner Zend Server CE als Ablösung für den bisher von mir verwendeten WampServer. Die Installation lief reibungslos und das Webinterface ermöglicht nun eine komfortable Konfiguration aller wichtigen PHP Einstellungen, so auch das Aktivieren und Deaktivieren von PHP-Extensions.
Hier konnte ich nun auch ohne größerere Probleme die Imagick-Extension aktivieren, was beim WampServer nicht so ohne Weiteres möglich war und einen unter Windows sowieso schon mal leicht zum Verzweifeln bringen kann
So weit so gut, doch trotzdem verweigerte mir Imagick den Dienst: Beim Versuch eine Bilddatei mittels des Befehls
$im = new Imagick('E:/test.jpg');
zu laden, erhielt ich eine ImagickException mit der Nachricht “NoDecodeDelegateForThisImageFormat”. Ein Blick in die PHP Info des Zend Servers verriet mir auch den Grund hierfür: Die Imagick-Extension war zwar geladen, jedoch stand im Feld “ImageMagick Supported formats” nur der Wert “0″. Imagick konnte also aus irgendeinem Grund nicht einmal mit dem einfachsten Bildformat umgehen.
Nach stundenlangem Googeln und Ausprobieren fand ich schließlich eine Lösung, die mich zum Erfolg führte:
Schritt 1: Installation der zur Imagick-Version passenden Version von ImageMagick
Die Versions-Nummer, die Imagick verwendet, ist im PHP-Info-Abschnitt von Imagick unter dem Punkt “ImageMagick version” zu finden. Bei mir war es die Version “ImageMagick 6.4.6 2008-12-01 Q16″. Anschließend kann man auf http://mhonarc.veidrodis.com/image_magick/binaries/ die passende Version heraussuchen, downloaden und installieren. Bei mir also die “ImageMagick-6.4.6-8-Q16-windows-dll.exe” entsprechend der Versionsnummer.
Schritt 2: ImageMagick Dateien kopieren
Damit Imagick die benötigten Libraries findet, müssen alle Dateien aus den im Installationsverzeichnis von ImageMagick zu findenden Verzeichnissen “modules/filters” und “modules/coders” direkt in das Hauptverzeichnis der ImageMagick-Installation (bei mir “C:\Program Files\ImageMagick-6.4.6-Q16″) kopiert werden.
Schritt 3: Umgebungsvariable eintragen
Damit Imagick weiß, wo die ImageMagick-Installation zu finden ist, muss eine Windows-Umgebungsvariable mit dem Namen “MAGICK_HOME” als Systemvariable und dem Pfad zur ImageMagick-Installation als Wert eingetragen werden. Bei mir unter Windows 7 RC ist dies zu finden unter Systemsteuerung /System, dort weiter auf erweiterte Systemeinstellungen und dann auf den Tab “Erweitert” und schließlich auf den Button “Umgebungsvariablen”:

Umgebungsvariable "MAGICK_HOME" für das ImageMagick-Installationsverzeichnis
Schritt 4: Windows neustarten
Ich las in manchen Foren, dass ein Windows-Neustart nicht unbedingt nötig wäre, bei mir funktionierte es jedoch nur mit Neustart.
Nach einem Neustart von Windows sollten nun im Imagick-Abschnitt der PHP Info statt der “0″ alle möglichen Bildformate aufgelistet werden, die unterstützt werden, und die oben gezeigte Code-Zeile sollte keine Exception mehr werfen.

Ich hoffe ich konnte mit diesem Beitrag all denjenigen, die vor einem ähnlichen Problem stehen, etwas weiter helfen.