【问题标题】:ImageMagick installation MediaTemple GridServerImageMagick 安装 MediaTemple GridServer
【发布时间】:2013-09-02 09:33:34
【问题描述】:

我已经按照KnowledgeBase article 激活了 ImageMagick 扩展

基本上,将这一行添加到php.ini

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

任何想法我做错了什么或故障排除的下一步是什么?

我已经联系了 MediaTemple 支持,他们只是说“抱歉,因为脚本输出的版本号证明它已安装”

【问题讨论】:

  • 该知识库文章允许您从 PHP 脚本调用 ImageMagick cli 工具,但它不安装 Imagick PEAR 类 (php.net/manual/en/book.imagick.php)。我没有看到在 (gs) 上使用 Imagick() 的简单方法。它可能需要从源代码编译,并且扩展名本地存储在您的路径中。我会试一试。

标签: php imagemagick mediatemple


【解决方案1】:

好的,我得到了这个工作,但它有点棘手。来了……

首先,您需要从源代码安装 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”。如果未指定,您将看到以下错误:

检查 ImageMagick MagickWand API 配置程序... 配置:错误:未找到。请提供路径 MagickWand-config 或 Wand-config 程序。

如果您为 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, 100, "red", "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

【讨论】:

  • 我按照这些说明使用当前版本 ImageMagick-6.9.1-0.tar.gz ,它运行良好。你们是最棒的。
  • 这些说明效果很好!需要注意一点:如果您的 PHP 版本不稳定但最新,您必须将 php-stable 替换为: $ export PHPPATH=php-latest -i | grep "Configure Command" | perl -pe "s/.*'.\/configure'\s*?'--prefix\=(.*?)'.*/\1/"
  • 这很棒。我通过了上面的好,但似乎仍然有一些问题。当我获取 IM 版本时,它返回的是默认安装的一个 MT GS(6.7.7-10),而不是我安装的那个(7.x)。关于他为什么会这样的任何想法?现在,当我尝试图像转换时,它们只是挂起:/
  • @philzelnar 你更新你的 php.ini 了吗?你是通过 php 还是 cli 做的?
  • 这些说明仍然很好用!谢谢克里斯和里奇。 ImageMagick 现在是第 7 版。如果您仍想使用第 6 版,您可能需要将下载 URL 调整为legacy.imagemagick.org。例如:$ wget http://legacy.imagemagick.org/download/ImageMagick-6.9.11-10.tar.gz
猜你喜欢
  • 2012-01-26
  • 2013-04-09
  • 2013-06-04
  • 2017-08-28
  • 1970-01-01
  • 2013-07-09
  • 2011-05-11
  • 1970-01-01
  • 2014-10-24
相关资源
最近更新 更多