Imagick mit Zend Server CE unter Windows

12. August 2009 3 Kommentare

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-imagemagick

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.

Imagick Php Info

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