Win7 PHP v5.6 成功安装Imagick库

需求

项目上需要大量图片生成缩略图,抠门老板不舍得用七牛,自己实现吧,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-x86
ImageMagick 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 settings
Include "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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值