Win7 PHP v5.6 成功安装Imagick库

来源:互联网 发布:网络通信链路有哪些 编辑:程序博客网 时间:2024/05/21 19:42

需求

项目上需要大量图片生成缩略图,抠门老板不舍得用七牛,自己实现吧,GD效率不行,用Imagick库实现。

环境

Windows 7 64位[XAMPP2016](http://www.xampps.com/) (Apache v2.4.18 、 PHP v5.6.16 VC11 X86)php_imagick-3.4.3-5.6-ts-vc11-x86ImageMagick 6.9.3-0 Q16 x86

问题

按照常规把dll放到ext目录内,把CORE开头的几个DLL放到PHP主目录里。并在php.ini里写入 extension=php_imagick.dll重启apache,很好,完美加载。

Imagick v3.4.3
桥岛麻袋!
为啥ImageMagick number of supported formats: 0

再进入CLI模式看下

用自带的PHP程序跑一下,果然有问题
Oops!

不能加载模块文件是什么鬼?搜了一下 IM_MOD_RL_png_.dll 发现是在ImageMagick\modules\coders目录内,好吧,把目录里所有DLL全部复制到PHP\ext目录内,不行。

移动到上级目录吧。

这里写图片描述

欧耶,果然可以了,重启APACHE,这次必须妥妥的……

然而现实给了我无情一击,妈蛋。

Oops!

真TMD奇怪,明明CLI可以加载的……

我又做了如下尝试:
1. 把ImageMagick\modules\coders里的IM*.dll放入C:\WINDOWS\SYSTEM32\内,不行。
2. 把ImageMagick\modules\coders里的DLL放入C:\WINDOWS\内,不行。
3. 把php_imagick里的CORE*.dll放入C:\WINDOWS\SYSTEM32\内,不行。
4. 把php_imagick里的CORE*.dll放入C:\WINDOWS\内,不行。

分析

后来突然想到一个问题,PHP CLI能加载说明DLL是没有问题的,问题肯定出在路径上!先看下apache路径`"E:\xampp\apache\bin\httpd.exe" -k runservice`在看下httpd.conf是怎么加载php的```# XAMPP settingsInclude "conf/extra/httpd-xampp.conf"```在看看httpd-xampp.conf```## XAMPP settings#PHPIniDir "/xampp/php/"LoadFile "/xampp/php/php5ts.dll"LoadModule php5_module "/xampp/php/php5apache2_4.dll"```用的是相对路径,问题应该就是这里了。由于是httpd调用php5apache2_4.dll,那当前运行路径肯定是E:\xampp\apache\bin\,如果要让imagick加载必须放在这里才对啊。把codes下DLL放到目录里试一下,果然。

解决

箭头所指是需要注意的地方
(箭头所指是需要注意的地方)
终于见到你
(终于见到你)

以上所有文件、库、DLL等都需要注意PHP版本、架构、TS、编译库,要选择与之对应的ImageMagick。

相关链接

http://www.xampps.com/
https://www.imagemagick.org/script/download.php
http://pecl.php.net/package/imagick
http://windows.php.net/download#php-7.1

参考文献

1. [http://www.cnblogs.com/wangqishu/p/5609950.html](http://www.cnblogs.com/wangqishu/p/5609950.html)2. [http://www.cnblogs.com/zjhblogs/p/6125967.html](http://www.cnblogs.com/zjhblogs/p/6125967.html)
原创粉丝点击