How To: MAMP mit Imagick unter OS X Mavericks ausstatten
Stefan Keller, den 9. März 2014In diesem How To möchten wir euch zeigen, wie ihr MAMP mit dem PHP-Modul Imagick ausstatten könnt. Dabei gehen wir auch darauf ein, was bei etwaigen Fehlern mit libfreetype.6.dylib zu tun ist.
MAMP ist eine Entwicklungsumgebung für OS X, die einen Apache-Server, PHP mit vielen Modulen und MySQL bereitstellt. Enthalten ist beispielsweise die GDLib, die die Manipulation von Grafiken mit PHP ermöglicht. Leider stößt GD an seine Grenzen, wenn man beispielsweise TIFF-Dateien verarbeiten möchte. Imagick schließt diese Lücke. Außerdem wird Imagick nachgesagt, bessere Resultate zu erzielen als GD. Leider ist Imagick trotz entsprechender Ankündigung bislang nicht in MAMP enthalten. Wir haben MAMP Pro verwendet und möchten es mit PHP 5.5 nutzen, da diese Version auch auf dem Server installiert ist.
Installation von Homebrew
Da wir mithilfe von Homebrew noch mehr Pakete installiert haben, ist dieser Paket-Manager unser Mittel der Wahl. Homebrew kann, ähnlich wie Mac Ports, für Linux entwickelte Tools und Programme auf OS X installieren. Wer es noch nicht installiert hat, kann es sich auf der Webseite herunterladen. Im Terminal sollte dann der Befehl brew
zur Verfügung stehen.
Abhängigkeiten auflösen
Bevor sich das PHP-Modul Imagick mittels Homebrew installieren lässt, müssen ein paar Abhängigkeiten geklärt werden. Der Dank für diesen Tipp geht an Daniel Feder von Stack Overflow. Benötigt wird PHP und dupes von Homebrew, das sich mit folgenden Befehlen installieren lässt:
$ sudo brew tap josegonzalez/php
$ sudo brew tap homebrew/dupes
Das ist notwendig, weil wir Imagick in MAMP einbinden wollen, Homebrew aber davon ausgeht, dass wir PHP als System-Dienst benötigen.
Installation von Imagick
Die Installation des PHP-Moduls von Imagick ist dann relativ einfach. Hierfür muss nur folgende Zeile im Terminal nachgeschoben werden:
$ sudo brew install php55-imagick
Wird das Paket für andere PHP-Versionen benötigt (5.3 oder 5.4), kann die „55“ im Paketnamen entsprechend angepasst werden. Die Erweiterung befindet sich im Anschluss unter dem Pfad /usr/local/Cellar/php55/5.5.6/lib/php/extensions/no-debug-non-zts-20121212/imagick.so
, bei anderen PHP-Versionen variiert der Pfad entsprechend.
Erweiterung laden
Im Anschluss muss die Erweiterung nach Lehrbuch in die php.ini eingetragen werden, damit PHP diese auch lädt. Dies muss in MAMP Pro aus dem Menü geschehen, da MAMP ansonsten die php.ini wieder auf die alten Werte zurücksetzt. Dafür muss aus Ablage, Vorlage editieren, PHP der Eintrag „PHP 5.5.3 php.ini“ ausgewählt werden. Hier gilt es, die folgende Zeile hinzuzufügen:
extension=/usr/local/Cellar/php55/5.5.6/lib/php/extensions/no-debug-non-zts-20121212/imagick.so
Die Gratis-Version von MAMP bietet diesen Komfort nicht. Hier muss in /Applications/MAMP/conf/php5.5.3
die Datei php.ini mit einem Texteditor bearbeitet und obige Zeile hinzugefügt werden.
Library not loaded: /usr/local/lib/libfreetype.6.dylib
Der Neustart des MAMP-Servers schlug bei uns an dieser Stelle fehl. Aus dem Menü X kann man in MAMP Pro die Logfiles auflisten lassen, beim kostenlosen MAMP muss man im Ordner /Applications/MAMP/logs
die Datei php_error.log selbst mit einem Editor öffnen, um an die Fehlermeldung zu kommen. In unserem Fall sah sie so aus:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php55/5.5.6/lib/php/extensions/no-debug-non-zts-20121212/imagick.so' - dlopen(/usr/local/Cellar/php55/5.5.6/lib/php/extensions/no-debug-non-zts-20121212/imagick.so, 9): Library not loaded: /usr/local/lib/libfreetype.6.dylib
Referenced from: /usr/local/lib/libMagickWand-6.Q16.1.dylib
Reason: Incompatible library version: libMagickWand-6.Q16.1.dylib requires version 17.0.0 or later, but libfreetype.6.dylib provides version 16.0.0 in Unknown on line 0
Tobias Eisenschmidt hat hierfür den entscheidenden Tipp parat gehabt. Das Problem ist, dass Imagick die LibFreeType-Bibliothek in Version 17 oder neuer benötigt, MAMP sie aber in Version 16.0.0 mitbringt. Die Lösung ist, dass OS X die aktuellste Version selbst mitbringt – aber dafür muss man MAMP verbieten, an der eigenen Quelle nach den Bibliotheken zu fahnden. Dafür muss die Datei /Applications/MAMP/Library/bin/envvars
mit einem Texteditor geöffnet werden. Die letzte Zeile lautet export DYLD_LIBRARY_PATH
und muss auskommentiert werden, indem eine Raute davor gesetzt wird. Das sieht dann so aus: #export DYLD_LIBRARY_PATH
. Anschließend lässt sich MAMP wieder aktivieren und ein Blick in die PHPInfo sollte die Verfügbarkeit von Imagick bescheinigen.