imagick für XAMMP unter MACOSX 10.8.3 installieren

Wenn am Webspace kein exec() für php erlaubt ist, dann bleibt einem für die Bildbearbeitung in PHP nur die GD-Lib oder das Php imagick Modul. Jedoch ist es alles andere als leicht das Modul für XAMMP unter MacOSX 10.8.3 (mountain lion) zu installieren. Hier eine kurze Anleitung dafür.

Ich bin eigentlich kein Webentwickler und wenn es um Oberflächen geht überlasse ich das gerne anderen Geübten. Jedoch hin und wieder muss ich dann doch herhalten für so manche WebApplikationen.

Für die Entwicklung verwende ich als IDE PhpStorm und als lokalen Webserver unter MacOSX XAMMP. Für ein kürzlich entwickeltes Projekt musste ich das Bild-Importieren möglichst viele verschiedene Bildformate für eine Galerie erlauben. Phps GD-Library ist jedoch beschränkt auf jpeg, png und gif. Da bleibt nur mehr das allseits bekannte ImageMagick über. Zusätzlich bietet phmagick auch eine robuste Library für php um direkt mit ImageMagicks convert zu interagieren. Jedoch benötigt phmagick das exec() in Php aktiviert ist. Per default ist das auch in XAMMP so jedoch auf Webspaces die Php erlauben ist dies meist wegen der Sicherheit nicht erlaubt. Also bleibt nur mehr imagick über. Also musste ich auf meinem Macbook ImageMagick und dann für XAMMPs php das imagick modul installieren.

Installieren von ImageMagick unter MacOSX

Um ImageMagick möglichst einfach installieren zu können, benötigen wir zuerst MacPorts:

http://www.macports.org

Pkg Installer runterladen und installieren.

Dann können wir auch schon ImageMagick installieren. Zuerst ein Terminal öffnen und dann mit

sudo port install ImageMagick

installieren.

PHP-imagick installieren

Als voraussetzung benötigen wir nun das XAMMP Entwicklungspacket zusätzlich zur normalen XAMMP Installation:

http://www.apachefriends.org/de/xampp-macosx.html

Nun versuchen wir imagick zu installieren:

cd /Applications/XAMPP/xamppfiles/bin
sudo ./pecl install imagick

Nun downloaded, übersetzt und installiert pecl das imagick Modul. Ebenfalls wird die php.ini um das Modul erweitert. Jedoch in meinem Fall wars das noch nicht. Zwar ließ sich der Apache starten, jedoch unter phpinfo() war das Modul noch nicht ersichtlich. Nach etwas Internet-Recherche fand ich heraus das imagick beim installieren als universal-lib installiert wurde. Also sowohl für i386 als auch für ppc. Jedoch das XAMMP php ist ein 64bit Executable x86_64.
Also imagick via source installieren.

pecl download imagick
tar xvf imagick-.....
cd imagick-....

So und jetzt wirds interessant. Wir müssen dem Modul nun mitteilen das wir zwar eine universal-lib möchten jedoch mit i386/x86_64. Dazu müssen wir folgendes ausführen:

sudo /Applications/XAMPP/xamppfiles/bin/phpize-5.3.1 MACOSX_DEPLOYMENT_TARGET=10.6 \
CFLAGS='-O3 -fno-common -arch i386 -arch x86_64' LDFLAGS='-O3 -arch i386 -arch x86_64' \
CXXFLAGS='-O3 -fno-common -arch i386 -arch x86_64'

sudo CFLAGS='-arch i386 -arch x86_64' CCFLAGS='-arch i386 -arch x86_64' CXXFLAGS='-arch \
i386 -arch x86_64' ./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config-5.3.1 --with-imagick=/opt/local

Der Installationspfad für ImageMagick muss nun noch angepasst werden, bei mir /opt/local.
Dann noch das ganze übersetzen und installieren

make
sudo make install

Dann kann man noch unter /Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/ mit Hilfe von file prüfen ob nun die Architektur stimmt:

file imagick.so
imagick.so: Mach-O universal binary with 2 architectures
imagick.so (for architecture i386):    Mach-O bundle i386
imagick.so (for architecture x86_64):    Mach-O 64-bit bundle x86_64

Dann den Apache neu starten und mit phpinfo() prüfen ob imagick nun wirklich aufscheint.
Falls dies immer noch nicht aufscheint, überprüfe die php.ini ob das Modul imagick.so auch wirklich geladen wird.

 

0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.