当前位置: 首页 > news >正文

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)

相关文章:

  • 在VC下配置openGL
  • [转]CURL 非阻塞调用类
  • 如何在VC下配置openGL2
  • 树莓派编译安装FFmpeg(添加H.264硬件编解码器支持)
  • 滑动菜单及滑动解锁技术分析
  • CentOS 67 下安装二进制版FFMPEG
  • 提供一个MTK在LCD上直接输入汉字或其他语言字串的函数
  • CentOS常用仓库
  • MySQL里bool类型字段是否需要添加索引测试
  • 提供一个MTK平台可以使用的DES加密算法
  • Linux磁盘空间不够用怎么办?
  • MTK层的运用
  • 树莓派上运行docker
  • 提供一个简单的滑动菜单的数据结构
  • PHP Ajax动态列表的后退操作——保存列表内容和点击位置
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • DataBase in Android
  • Invalidate和postInvalidate的区别
  • Java 内存分配及垃圾回收机制初探
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript函数式编程(一)
  • Java教程_软件开发基础
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • tab.js分享及浏览器兼容性问题汇总
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 工作手记之html2canvas使用概述
  • 讲清楚之javascript作用域
  • 京东美团研发面经
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 用mpvue开发微信小程序
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 主流的CSS水平和垂直居中技术大全
  • 白色的风信子
  • 整理一些计算机基础知识!
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • #if #elif #endif
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2)MFC+openGL单文档框架glFrame
  • (2022 CVPR) Unbiased Teacher v2
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (规划)24届春招和25届暑假实习路线准备规划
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (七)Knockout 创建自定义绑定
  • (四)Android布局类型(线性布局LinearLayout)
  • (已解决)什么是vue导航守卫