linux下安装php的imagick扩展模块(附php升级脚本)
imagick是一个PHP的扩展,是一套软件系列,用ImageMagick提供的API来进行图片的创建与修改,不过这些操作已经包装到扩展imagick中去了,最终调用的是ImageMagick提供的API ImageMagick主要用于图片的创建、编辑以及转换等,ImageMagick与GD的性能要高很多,如果是在处理大量的图片时更加能体现ImageMagick的性能。
下面介绍下安装php的imagick扩展模块的方法:
(1)下载软件 下载ImageMagick.tar.gz: http://pan.baidu.com/s/1qYha9GS (提取密码:gy63) 下载imagick-3.1.0RC1.tgz: http://pan.baidu.com/s/1hsHiEUg (提取密码:dqu2)
一、安装php的imagick扩展模块第一种方法:(pcel安装imagick)【推荐第一种方法】
(2)安装ImageMagick
[root@dev software]# tar -xzvf ImageMagick.tar.gz [root@dev software]# cd ImageMagick-7.0.2-0 [root@dev ImageMagick-7.0.2-0]# ./configure --prefix=/usr/local/imagemagick [root@dev ImageMagick-7.0.2-0]# make && make install
[root@dev ImageMagick-7.0.2-0]# /Data/app/php5.6.26/bin/pecl install imagick
................ Build process completed successfully Installing '/Data/app/php5.6.26/lib/php/extensions/no-debug-non-zts-20131226/imagick.so' Installing '/Data/app/php5.6.26/include/php/ext/imagick/php_imagick_shared.h' install ok: channel://pecl.php.net/imagick-3.4.3RC1 configuration option "php_ini" is not set to php.ini location You should add "extension=imagick.so" to php.ini
产生的imagick.so文件拷贝到/Data/app/php5.6.26/lib/php/extensions/no-debug-non-zts-20131226下 在php.ini文件里添加imagick.so 然后重启php加载imagick模块即可。 使用/Data/app/php5.6.26/bin/php -m 命令查看加载的模块
二、安装php的imagick扩展模块第二种方法:(编译安装imagick) (3)安装Imagick 注:安装该扩展不要求安装ImageMagick [root@dev software]# tar -xzvf imagick-3.1.0RC1 [root@dev software]# cd imagick-3.1.0RC1 [root@dev imagick-3.1.0RC1]# /Data/app/php5.6.26/bin/phpize #这里,之前安装的php路径是/Data/app/php5.6.26,使用phpize生成configure编译文件 [root@dev imagick-3.1.0RC1]# ./configure --with-php-config=/Data/app/php5.6.26/bin/php-config --with-imagick=/usr/local/imagemagick ------------------------------------------------------- 报错: checking for MagickWand.h header file... configure: error: Cannot locate header file MagickWand.h
解决办法:
查看imagick解压目录下的config.m4文件,发现ImageMagick在7.0.2高版本后的目录结构发生了变化所导致编译失败的。 查看config.m4的第55,56行内容: [root@dev imagick-3.1.0RC1]# vim config.m4 ....... if test -r $WAND_DIR/include/ImageMagick/wand/MagickWand.h; then AC_MSG_RESULT(found in $WAND_DIR/include/ImageMagick/wand/MagickWand.h) .......
对比ImageMagick安装目录结构: [root@dev include]# pwd /usr/local/imagemagick/include [root@dev include]# ls ImageMagick-7 [root@dev include]# ls ImageMagick-7/ Magick++ MagickCore Magick++.h MagickWand
发现ImageMagick安装后目录结构和上面imagick的config.m4文件里的不一样 需要做下软链接: [root@dev include]# ln -s ImageMagick-7 ImageMagick [root@dev include]# ls ImageMagick ImageMagick-7 [root@dev include]# cd ImageMagick [root@dev ImageMagick]# ls Magick++ MagickCore Magick++.h MagickWand [root@dev ImageMagick]# ln -s MagickWand wand [root@dev ImageMagick]# ls Magick++ MagickCore Magick++.h MagickWand wand
这样,再次编译imagick就成功了! [root@dev imagick-3.1.0RC1]# ./configure --with-php-config=/Data/app/php5.6.26/bin/php-config --with-imagick=/usr/local/imagemagick ......... checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no
creating libtool appending configuration tag "CXX" to libtool configure: creating ./config.status config.status: creating config.h
------------------------------------------------------- [root@dev imagick-3.1.0RC1]# make && make install
--------------------------------------------------------------------------- 报错: make: *** [imagick_class.lo] 错误 1
解决: 原因是没有找到pkgconfig路径
[root@dev imagick-3.1.0RC1]# find /usr -name pkgconfig /usr/lib64/pkgconfig /usr/share/pkgconfig /usr/local/lib/pkgconfig /usr/local/imagemagick/lib/pkgconfig /usr/local/include/libmemcached/lib/pkgconfig /usr/local/libmemcached/lib/pkgconfig
[root@dev imagick-3.1.0RC1]# export PKG_CONFIG_PATH=/usr/local/imagemagick/lib/pkgconfig
然后再次make && make install
完整的流程是: [root@dev imagick-3.1.0RC1]# /Data/app/php5.6.26/bin/phpize [root@dev imagick-3.1.0RC1]# export PKG_CONFIG_PATH=/usr/local/imagemagick/lib/pkgconfig [root@dev imagick-3.1.0RC1]# ./configure --with-php-config=/Data/app/php5.6.26/bin/php-config --with-imagick=/usr/local/imagemagick [root@dev imagick-3.1.0RC1]# make && make install ----------------------------------------------------------------------------
make install执行结果显示: installing shared extensions: /Data/app/php5.6.26/lib/php/extensions/no-debug-non-zts-20131226/ Installing header files: /Data/app/php5.6.26/include/php/
生成imagick.so到/Data/app/php5.6.26/lib/php/extensions/no-debug-non-zts-20131226/
手动将imagick.so添加到php.ini文件里, [root@dev etc]# pwd /Data/app/php5.6.26/etc [root@dev etc]# vim php.ini ............ extension="/Data/app/php5.6.26/lib/php/extensions/no-debug-non-zts-20131226/imagick.so"
然后重启php和nginx即可!
[root@dev etc]# /Data/app/php5.6.26/bin/php -m ..... imagick
----------------------------------------------
---------------------------php升级:由php5.5.1升级到php5.6.26------------------------- 由于线上服务器最初部署的php环境版本是5.5.1,后续应开发需求,将其升级到5.6.26版本
下面附上自己的升级脚本:
[root@huanqiu_web1 software]# pwd /software/software
[root@huanqiu_web1 software]# ls #下载升级需要的软件 ImageMagick.tar.gz install_php.sh memcached-2.2.0.tgz php-5.6.26.tar.gz php-wkhtmltox-master.zip
[root@huanqiu_web1 software]# cat install_php.sh #升级脚本(下面编译时带的mysql参数,mysql安装后可以不启动,这里编译需要跟上mysql参数) #!/bin/bash cd /software/software tar -xvf php-5.6.26.tar.gz cd php-5.6.26 ./configure --prefix=/Data/app/php5.6.26 --with-curl --enable-mbstring --with-mysqli=/Data/app/mysql5.6.25/bin/mysql_config --with-mysql=/Data/app/mysql5.6.25/ --disable-rpath --enable-inline-optimization --with-pcre-regex --with-config-file-path=/Data/app/php5.6.26/etc/ --with-config-file-scan-dir=/Data/app/php5.6.26/etc/php.d --with-gd --enable-soap --with-pdo-mysql=/Data/app/mysql5.6.25/ --with-freetype-dir --with-png-dir --with-mcrypt --with-zlib --with-jpeg-dir --with-iconv=/usr/local/lib/ --enable-fpm
make && make install
###extension#### cd /software/software tar -xvf ImageMagick.tar.gz cd ImageMagick-7.0.2-0 ./configure make make install /Data/app/php5.6.26/bin/pecl install imagick
cd /software/software tar -xvf memcached-2.2.0.tgz cd memcached-2.2.0 /Data/app/php5.6.26/bin/phpize ./configure --with-php-config=/Data/app/php5.6.26/bin/php-config make && make install
cd /software/software unzip php-wkhtmltox-master.zip cd php-wkhtmltox-master /Data/app/php5.6.26/bin/phpize ./configure --with-php-config=/Data/app/php5.6.26/bin/php-config make && make install
cd /software/software/php-5.6.26/ext/sockets /Data/app/php5.6.26/bin/phpize ./configure --with-php-config=/Data/app/php5.6.26/bin/php-config make && make install
cd /software/software/php-5.6.26/ext/bcmath /Data/app/php5.6.26/bin/phpize ./configure --with-php-config=/Data/app/php5.6.26/bin/php-config make && make install
cd /software/software/php-5.6.26/ext/gettext /Data/app/php5.6.26/bin/phpize ./configure --with-php-config=/Data/app/php5.6.26/bin/php-config make && make install
cd /software/software/php-5.6.26/ext/openssl mv config0.m4 config.m4 /Data/app/php5.6.26/bin/phpize ./configure --with-php-config=/Data/app/php5.6.26/bin/php-config make && make install
cp /Data/app/php5.5.1/etc/php-fpm.conf /Data/app/php5.6.26/etc/ cp /Data/app/php5.5.1/etc/php.ini /Data/app/php5.6.26/etc/
sed -i 's#/Data/app/php5.5.1/lib/php/extensions/no-debug-non-zts-20121212/#/Data/app/php5.6.26/lib/php/extensions/no-debug-non-zts-20131226/#g' /Data/app/php5.6.26/etc/php.ini
sed -i '/memcached.so/i extension="/Data/app/php5.6.26/lib/php/extensions/no-debug-non-zts-20131226/imagick.so"' /Data/app/php5.6.26/etc/php.ini
- 使用sklearn做特征工程
- 【专业技术】CSS作用及用法
- 生产环境sql语句调优实战第六篇(r2笔记91天)
- 关于分区表的move操作(r2笔记90天)
- 简单分析oracle的数据存储(r2笔记89天)
- 机器学习线性分类算法:感知器原理
- 通过shell脚本来查看Undo中资源消耗高的sql(r2笔记88天)
- 关于分页查询的优化思路(r3笔记第7天)
- 用机器学习方法对影评与观影者情感判定
- 关于查看文件的几个小命令(r3笔记第6天)
- 关于纠结的recycle pool的设置(r3笔记第5天)
- 融会贯通学习trigger(r2笔记第4天)
- 完整的R语言预测建模实例-从数据清理到建模预测
- 利用回归模型预测数值型数据(代码)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++核心准则T.5:结合使用泛型和面向对象技术应该增强它们的效果而不是成本
- C++核心准则T.10:为所有的模板参数定义概念
- C语言二级指针用法之模拟句柄用途
- Linux解压缩文件
- C++核心准则T.11:只要可能就使用标准概念
- 给pugjs的stun主题添加canvas时钟
- C++核心准则T.12:声明局部变量类型时,概念比auto更好
- Arch Linux切换rEFInd开机引导程序
- C++核心准则T.13:对于简单的,单类型参数概念,使用缩略记法更好
- VBA编写Ribbon Custom UI编辑器08——实现ZIP的写入
- 用 Python 写个七夕表白神器
- 3分钟短文 | Laravel 用户授权原来内置了这么多方法
- E0144"const char *" 类型的值不能用于初始化 "char *" 类型的实体的三种解决方法
- 数据采集面对JS加密无所适从?善用这3个工具,搞定一大半的JS逆向!
- 点赞功能设计与实现