ImageMagick ist ein ToolKit, das im Gegensatz zur PHP-Standard-Grafikbibliothek GD auch gif, png und andere Bild-Formate unterstützt. In Drupal z.B. wird es vom Image-Modul verwendet, mit dem Uploads von Bildern in Thumbnails und geeignete Größen umgewandelt werden können. Mein Hoster unterstützt diese Bibliothek, so dass ich darauf aufsetzende Module einsetzen kann.
Für die lokale Entwicklung muss ich ImageMagick unter Windows installieren. Das Hauptproblem dabei ist, dass vom Distributor und von PHP-Extension-Entwicklern verschiedene Compilierungen angeboten werden, die zueinander passen müssen.
Falls man hier falsche Kombinationen installiert hat bekommt man Fehlermeldungen wie:
- "CORE_RL_magick_.dll not found",
- "PHP5.dll not found" oder
- "Der Prozedureinsprungspunkt '<xyz>
' wurde in der dll 'CORE_RL_magick_.dll' nicht gefunden", wobei <xyz> für irgendeinen Funktionsnamen steht.
Um die richtigen Kombination von Dll's zu finden muss man sich zunächst folgende Fragen beantworten:
- Liegt bei mir x64 oder x86-Architektur vor und zwar nicht die eigene Windows-Plattform, sondern die Software, die die "magischen" DLLs von ImageMagick verwendet, also in meinem Fall mein PHP 5.4. Rausfinden kann man das mit phpinfo().
- Welche PHP-Version verwendet man: PHP3 bis PHP6. Die Installation von ImageMagick alleine reicht nämlich nicht. Man benötigt außerdem eine php_imagick.dll im Verzeichnis ext seiner PHP-Installation, die natürlich in der php.ini als extension angemeldet sein muss. Genau da liegt eines der größten Probleme für die Installation, denn es gibt jede Menge Quellen im Internet von allen möglichen Anbietern, die aber meist nicht zur gewählten ImageMagick-Installation passen.
- Thread save oder Non thread save. Dies kann man ebenfalls anhand seiner PHP-Installation erkennen. Eine Thread-Save-Installation enthält im php-Verzeichnis z.B. eine php5ts.dll während eine Non-Thread-Save-Installation eine php5.dll enthält.
Mit diesen Infos können wir nun nach der richtigen Kombination suchen. Als Beispiel mein Fall: Ich verwende momentan auf einem x64-Windows (was keine Rolle spielt) ein XAMPP-php mit x86-Architektur und zwar mit PHP 5.4 Thread save.
Ich installiere also folgendermaßen:
- Ich hole mir von der ImageMagick-Seite diese Version: Win32 dynamic at 16 bits-per-pixel für x86-Architektur und installiere es in das Verzeichnis C:\ImageMagick und nicht in das von der Installation vorgeschlagene. Ich muss die Installation auch nicht, wie in der Anleitung vorgeschlagen wird, als Administrator ausführen.
- Ich setze diesen Pfad (sicherheitshalber) manuell in meiner Windows-PATH-Umgebungsvariable.
- Ich hole mir von dieser Seite die erforderliche DLL für mein PHP und zwar ist das die Version: php_imagick-3.1.2-5.4-ts-vc9-x86.zip. Dieses Archiv enthält nicht nur meine php_imagick.dll, sondern viele weitere Dll's, mit denen die gleichnahmigen unter C:\ImageMagick später überschrieben werden, weil nur diese Dll's zur php_imagick.dll im Archiv passen. Dies ist zwar absoluter Murks, aber so ist es nun einmal.
- Ich entpacke die php_imagick.dll aus dem Archiv in das Verzeichnis C:\xampp\php\ext und melde diese Extension in meiner php.ini-Datei an: extension=php_imagick.dll.
- Mit den anderen Dateien aus dem Archiv überschreibe ich einfach die entsprechenden Dateien in C:\ImageMagick.
- Ich starte mein XAMPP-Control-Panel und Apache neu (Neustart Rechner ist nicht nötig) und siehe da, ich habe beim Start von Apache endlich keine Fehlermeldungen mehr.
Kommentare
Läuft!
Vielen Dank für die gute Beschreibung - die Anwendung funktioniert jetzt einwandfrei.
Freut mich
Danke für's Feedback.
tobias.kirsch@kochan.de
Ich muss mich anschließen... überall gibt es einen Wust an Infos, die alle immer sagen, dass man die passende php_imagick.dll benötigt, aber wie man die findet, was es mit dem "x64" auf sich hat und dass man vor allem die anderen .dll-Dateien im ImageMagick-Ordner auch noch austauschen muss, wird nirgendwo erwähnt... Tausend Dank!!!