精英意识会让人走向孤独

忘记社区密码或者保密贴查看密码的,请给我留言,并留联系方式。

Avatar

手工编译并安装ImageMagick,并加装PHP模块magickwand

过去在ValueOf时代,就有一些虚拟主机用户对Prima for Linux产品提出需要ImageMagick的支持。当时给那些客户的标准答复:这个内容不属于Prima系统的技术支持范围,哈哈~~~后来发现,要想做好Support和服务,光做分内的事情是不成的,分外的事情也要做。三天两头帮助客户搞点分外的事情,是严重加强与客户联系的好方法。

香港之行的客户提出要ImageMagick了,答复是等一段时间,我们看看能不能做到产品里边成为自动的模版。结果晚上,正刚和firefly吃饭回来,就被询问是否能给org也加装上一个。。。

既然大家都用,那好吧,立刻搞。花了一个上午down包,看文档,编译,上org实测,pass了。贴出来和大家共享,也便于以后的查阅。

知识库
http://www.swsoft.com.cn/support.php?x=&mod_id=2&root=74&id=457

文章主题:
ImageMagick和magickwand是什么?如何加装?

解决方案:
ImageMagick是一个用于图象处理的程序
可以运行在windows下和linux下
他的功能非常强大
能进行大小、格式、水印、标签等各种图象处理
比如在Linux下执行convert --help
即可查看ImageMagick的一部分功能说明

在PHP程序中,也可以调用这个ImageMagick程序
但是,调用的形式是通过php的module来实现的
这个module的名称叫做magickwand
很多程序员改用magickwand而不再使用php内置的gd图象函数库

ImageMagick功能非常强大,并且在Linux的发行版的光盘中都包含了安装的rpm
但是系统上自带的ImageMagick的版本通常很老,无法和magickwand共存
所以只能自行安装一个新的
而编译magicwand也是比较复杂的
下边会详细讲述

环境准备
------------------------
编译php的magickwand模块环境上必须本身已经装有php
(因为一会要用php里边的phpize程序)
下载最新版的ImageMagick(版本大于6.2)
这是因为Redhat自带的版本是5.x,不能搭配magickwand使用
所以只能自己编译一个6.2.x版本来用了
并且,不光是开发环境需要这个包,在实际运行的服务器上
也要手工编译一个ImageMagick-6.2.x版本才可以。
从ImageMagick的官方站下载源码包(用google的搜索第一项就是官方站)
解压缩后配置安装
./configure \
LDFLAGS="-L/usr/lib" CPPFLAGS="-I/usr/include" \
--prefix=/usr/local/ImageMagick \
--enable-shared \
--enable-lzw
make
make install
则6.2版本的ImageMagick安装完成

下载
------------------------
从magickwand的官方站下载源码包(用google的搜索第一项就是官方站)
从php.net下载php源码
将php源码解压缩,把magickwand也解压缩,放到php源码下的ext/目录下
例如/root/php-4.4.2/ext/magickwand

整合Module
------------------------
为什么要整合module?这是因为php内置的图象处理函数库是gd,而不是magickwand
在php的配置脚本中根本看不到
比如到php的源码根目录下,例如:
cd /root/php-4.4.2
执行./configure --help | grep magickwand
可以发现根本搜索不到magickwand的有关信息
所以直接编译是不能获得magickwand模块支持的
所以,需要手工把magickwand的源代码添加到php的source tree
并且重新生成configure脚本,然后再编译

进入目录cd /root/php-4.4.2/ext/magickwand
执行phpize
phpize这个命令是包含在php包本身里边的,如果这台机器没装过php,这没法执行这个命令
(这就是为什么要把程序放在已经安装了php的服务器上编译的原因)
然后退回到php的源码根路径
cd /root/php-4.4.2
删除老的configure文件
rm ./configure
生成新的configure文件
./buildconf --force
这个时候在php源码目录下,一个新的configure脚本诞生了
用这个脚本去配置编译php,才能开启magickwand模块
执行./configure --help | grep magickwand可以看到:
--with-magickwand=DIR Include Magickwand support
这说明现在进行php的配置编译,就可以启用这个模块了

配置编译
------------------------
现在配置php,使用参数:
./configure \
--enable-shared \
--with-magickwand=shared,/usr/local/ImageMagick \
--enable-module=shared,magickwand
这里使用enable-module方式是为了获取so模块文件,便于给其他服务器加装
然后编译
make
等待几分钟即可完成了

获取模块
------------------------
然后就可以去php的源码目录中找刚才编译出来的so文件了
find /root/php-4.4.2 -name 'magickwand.so'
把这个文件copy出来,即可放置到别的服务器上使用了
cp ./module/magickwand.so /root

生产环境上安装
------------------------
在实际运行的服务器上,要先按照前边所述的方法
编译一个6.2.x版本的ImageMagick并安装到服务器上
然后把magickwand.so复制到php的模块目录里边
比如对应as4版本的php:/usr/local/php4/lib/php
然后在php.ini加入extenstion=magickwand.so
比如对应as4的版本的php.ini在/usr/local/php4/etc/php.ini
保存退出即可,无须重新启动任何服务。


辛苦了!
imgk图形处理比gd强的不是一点半点。

先谢谢了,不过还是有个问题,上面的步骤都可以执行,但是还是无发通过PHP使用ImageMagick,而且用phpinf(),显示的PHP的信息里并没有ImageMagick,请问这是为什么啊?

评论已关闭