我按照
KnowledgeBase article激活了ImageMagick扩展
open_basedir = /nfs:/tmp:/usr/local:/etc/apache2/gs-bin:/usr/bin/convert
但是,这似乎不起作用.
这个脚本输出版本号就好了:
$IM_version=shell_exec("/usr/bin/convert -version"); echo $IM_version;
但是,当我尝试使用Imagick类时,我收到错误.
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(); }
错误:
Fatal error: Class 'Imagick' not found in /xxxxxxxxxxxxxxx/html/mt.PHP on line 8
任何想法我做错了什么或下一步的故障排除是什么?
好吧,我有这个工作,但它有点棘手.开始…
首先,您需要从源代码安装ImageMagick.如果您已经可以访问“MagickWand-config”,则此步骤可以是可选的,但它不在我的路径中.以下是我将其安装到(gs)上的备用目录中的步骤:
注意:截至本文,最新版本为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
Imagick PHP类是PECL扩展,因此我们将使用Media Temple提供的KB进行一次更改.以下是步骤:
$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
这是我们的脚本偏离指令的地方.我们需要指定ImageMagick安装的路径以使用’MagickWand-config’.如果未指定,则会看到以下错误:
checking ImageMagick MagickWand API configuration program…
configure: error: not found. Please provide a path to
MagickWand-config or Wand-config program.
如果您已使用备用位置进行ImageMagick的源安装,请将该路径替换为“–with-imagick”的路径.
$./configure --with-PHP-config=$PHPPATH/bin/PHP-config --with-imagick=/home/#####/etc/imagemagick
恢复正常说明:
$make && cp modules/*.so /home/$SITEID/data/lib/PHP
更新您的PHP.ini文件,该文件应位于/home/#####/etc/PHP.ini并添加以下两行:
extension_dir=/home/#####/data/lib/PHP/
extension = imagick.so
完成后,这是我运行的脚本:
<?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,"png" ); /*** write image to disk ***/ $im->writeImage( '/tmp/rectangle.png' ); echo 'Image Created'; } catch(Exception $e) { echo $e->getMessage(); }
输出:
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