2013-08-29 12 views
7

Ich habe die ImageMagick Erweiterung gemäß der GrundsätzlichImageMagick Installation Mediatemple GridServer

KnowledgeBase article aktiviert, das Hinzufügen dieser Zeile php.ini:

open_basedir = /nfs:/tmp:/usr/local:/etc/apache2/gs-bin:/usr/bin/convert 

Dies ist jedoch nicht zu funktionieren scheint.
Dieses Skript gibt die Versionsnummer nur fein:

$IM_version=shell_exec("/usr/bin/convert -version"); 
echo $IM_version; 

Allerdings, wenn ich versuche, die Imagick Klasse zu verwenden, erhalte ich einen Fehler.

try 
{ 
     /*** a new imagick object ***/ 
     $im = new Imagick(); 

     /*** Create a red rectangle ***/ 
     $im->newImage(200, 100, "red", "png"); 

     /*** write image to disk ***/ 
     $im->writeImage('/tmp/rectangle.png'); 

     echo 'Image Created'; 
} 
catch(Exception $e) 
{ 
     echo $e->getMessage(); 
} 


Fehler:

Fatal error: Class 'Imagick' not found in /xxxxxxxxxxxxxxx/html/mt.php on line 8 

Irgendwelche Ideen, was ich falsch mache oder was ist der nächste Schritt bei der Fehlersuche ist?

Ich habe Mediatemple Träger in Kontakt gebracht und sie sagten nur „sorry aber da das Skript die Anzahl Version gibt es beweist es installiert ist“

+2

Das KB-Artikel ermöglicht es Ihnen, die ImageMagick cli Tools aufrufen aus PHP-Skripten, aber es installiert nicht die Imagick PEAR-Klasse (http://www.php.net/manual/en/book.imagick.php). Ich sehe keine einfache Möglichkeit, Imagick() auf dem (gs) zu verwenden. Es muss möglicherweise von Quelle kompiliert werden und die Erweiterung lokal in Ihrem Pfad gespeichert werden. Ich gebe das eine Chance. –

Antwort

18

Ok, ich habe diese Arbeit, aber es war ein bisschen schwierig. Hier geht's ...

Zuerst möchten Sie ImageMagick von der Quelle installieren. Dieser Schritt kann optional sein, wenn Sie bereits Zugriff auf 'MagickWand-config' haben, aber es war nicht in meinem Weg. Hier waren die Schritte, die ich befolgte, um es in ein alternatives Verzeichnis auf der (gs) zu installieren:

Hinweis: Ab diesem Beitrag war die neueste Version 6.8.9.3.

$ wget http://www.imagemagick.org/download/ImageMagick-6.8.9-3.tar.gz 
$ tar xvfz ImageMagick-6.8.9-3.tar.gz 
$ cd ImageMagick-6.8.9-3 
$ mkdir /home/#####/etc/imagemagick 
$ ./configure --prefix=/home/#####/etc/imagemagick 
$ make 
$ make install 

Die Imagick PHP-Klasse ist eine PECL-Erweiterung, so dass wir es mit den mitgelieferten KB von Media Temple mit einer Änderung installieren. Hier sind die Schritte:

$ export SITEID=`pwd | awk -F\/ '{ print $3 }'` 
$ export PHPPATH=`php-stable -i | grep "Configure Command" | perl -pe "s/.*'.\/configure'\s*?'--prefix\=(.*?)'.*/\1/"` 
$ mkdir /home/$SITEID/data/lib 
$ mkdir /home/$SITEID/data/lib/php/ 
$ wget http://pecl.php.net/get/imagick && tar zxvf imagick && cd imagick-* && $PHPPATH/bin/phpize 

Dies ist, wo unser Skript von den Anweisungen abweicht. Wir müssen den Pfad zu unserer ImageMagick-Installation angeben, um 'MagickWand-config' zu verwenden. Wenn dies nicht angegeben ist, werden Sie die folgende Fehlermeldung angezeigt:

checking ImageMagick MagickWand API configuration program... configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.

Wenn Sie einen anderen Speicherort für die Quelle von ImageMagick installieren verwendet haben, ersetzen Sie den Pfad für ‚--with-imagick‘ mit, dass Pfad.

$ ./configure --with-php-config=$PHPPATH/bin/php-config --with-imagick=/home/#####/etc/imagemagick 

Wiederaufnahme der normalen Anweisungen:

$ make && cp modules/*.so /home/$SITEID/data/lib/php 

Aktualisieren Sie Ihre php.ini-Datei, die auf/home/#####/etc/php befinden sollte.ini und fügen Sie diese 2 Zeilen:

extension_dir=/home/#####/data/lib/php/

extension = imagick.so

Wenn Sie fertig sind, hier ist das Skript, das ich lief:

<?php 

$IM_version=shell_exec("/usr/bin/convert -version"); 
echo $IM_version; 

if (!extension_loaded('imagick')) 
{ 
    echo "imagick not installed\n"; 
} 
else 
{ 
    echo "imagick installed\n"; 
} 


try 
{ 
     /*** a new imagick object ***/ 
     $im = new Imagick(); 

     /*** Create a red rectangle ***/ 
     $im->newImage(200, 100, "red", "png"); 

     /*** write image to disk ***/ 
     $im->writeImage('/tmp/rectangle.png'); 

     echo 'Image Created'; 
} 
catch(Exception $e) 
{ 
     echo $e->getMessage(); 
} 

Ausgang:

Version: ImageMagick 6.6.0-4 2012-05-03 Q16 http://www.imagemagick.org 
Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC 
Features: OpenMP 

imagick installed 
Image Created 
+0

Ich befolgte diese Anweisungen mit der aktuellen Version ImageMagick-6.9.1-0.tar.gz, und es funktioniert einwandfrei. Ihr Jungs sind die Besten. –

+1

Diese Anweisungen funktionierten perfekt! Mit einer kleinen Anmerkung: Wenn Ihre PHP-Version nicht stabil ist, aber spätestens, müssen Sie die Zeile ersetzen, die php-stable mit dieser lautet: $ export PHPPATH = 'php-neuste -i | grep "Befehl konfigurieren" | perl -pe "s /.*'.\/ configure '\ s *?' - Präfix \ = (. *?) '. */\ 1 /" ' – user2089160

+0

Das ist großartig. Ich schaffte es durch das oben genannte Okay, aber scheint immer noch ein paar Probleme zu haben. Wenn ich die IM-Version ergreife, kommt sie zurück mit der, die MT GS standardmäßig installiert hat (6.7.7-10) und nicht die, die ich installiert habe (7.x). Irgendwelche Ideen, warum das sein würde? Jetzt, wenn ich Bildtransformationen versuche, hängen sie einfach:/ – philzelnar