我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

调试一个项目的时候,发现其需要开启imagick扩展。这个扩展很古老了,苏南大叔很多年前碰到的第一个php扩展就是它。那么,在最新版本的php中,如何开启这个imagick扩展呢?首先要说明一点的是:这个imagick扩展确实是和其它扩展不一样,按照普通的思路去安装imagick扩展的话,会失败的。

苏南大叔:windows环境,php如何正确安装并配置imagick扩展? - php-imagick-hero
windows环境,php如何正确安装并配置imagick扩展?(图6-1)

大家好,这里是苏南大叔的平行空间笔记本博客,这里介绍苏南大叔和计算机代码的故事。本文描述,在php中开启imagick扩展的方法。测试环境:win10php@7.4.29-ntsphp-imagick@3.7.0imagick@7.1.0

下载扩展

下载扩展dll用于扩展的开启准备。

首先,选择【可选】下载安装最新的php7系列的php@7.4.29

苏南大叔:windows环境,php如何正确安装并配置imagick扩展? - php-7429-download
windows环境,php如何正确安装并配置imagick扩展?(图6-2)

其次,下载的是pecl扩展php-imagick【必选】,这里还是下载的最新版的imagick扩展。一定要注意和php的版本及vc版本一一对应。这里值得特殊提一下的是:php-imagick@3.7.0提供的dll最低支持php@7.4,然后就是php@8系列了。

苏南大叔:windows环境,php如何正确安装并配置imagick扩展? - imagick扩展下载
windows环境,php如何正确安装并配置imagick扩展?(图6-3)

到这里的时候,看起来还是比较正常。把php_imagick.dll拖出来,放到ext/目录下面。然后,配置php.ini开启这个php-imagick扩展。

苏南大叔:windows环境,php如何正确安装并配置imagick扩展? - 配置文件开启扩展
windows环境,php如何正确安装并配置imagick扩展?(图6-4)

这里有个坑就是:extension_dir配置,默认是去c:/php/ext/目录下面去找扩展的。请正确配置这个值!

重启后,刷新phpinfo()页面,发现:没有效果,加载失败!那么,究竟是为什么呢?

如果没有显示相关扩展信息,在运行imagemagick相关代码的时候,就可能会碰到下面的错误信息输出:

Fatal error: Uncaught Error: Class 'Imagick' not found

特别配置【不同于其他扩展】

php-imagick扩展压缩包中,除了php_imagick.dll外,还有其它一堆.dll文件。【重点来了】,这些文件要放置在特殊位置,这个php_imagick.dll才能最终加载成功。经过无数次实验,这个可以生效的位置是:

  • php根目录下面,也就是php.exe的同级目录下面。【推荐】
  • 系统目录,比如system32目录下面。
  • 系统环境变量path下的自定义目录下面,注意一定需要【系统环境变量】,而不是用户环境变量。而且环境变量的生效,是需要读取和刷新的时机的,所以出错的概率比较大。

刷新phpinfo()页面,就可以显示该扩展加载成功!

苏南大叔:windows环境,php如何正确安装并配置imagick扩展? - phpinfo-imagick
windows环境,php如何正确安装并配置imagick扩展?(图6-5)

总结一下,imagick扩展能够正确被加载的关键点有如下几个:

关键点推荐配置值
(php.ini) extension_dir配置在ext目录下
(php.ini) extension =imagick
(php-imagick.zip) php_imagick.dll直接放在ext目录下
(php-imagick.zip) 其余的dll文件放在php.exe同级目录下

下载imagick【可选】

下载imagick的主程序,这里也下载最新版。不过,鉴于官方推荐下载的是安装版本,这里苏南大叔还是更加喜欢portable绿色版。

并配置环境变量,设置MAGICK_HOME为本机路径的<imagick>/的可执行程序目录。(有的imagick版本是在bin目录里面)

苏南大叔:windows环境,php如何正确安装并配置imagick扩展? - imagemagick
windows环境,php如何正确安装并配置imagick扩展?(图6-6)

在网上的相关教程里面,这里都是必须配置的。不过在苏南大叔的测试实验中,这个步骤没有操作的话,imagick的代码也是可以正常运行的。

相关文档

这个imagick扩展甚至还有个官方网站,大家可以参考下面的文章:

更多php扩展安装的文章:

综述

对比php的其它扩展,这个imagick扩展非常奇怪,使用安装方式都非常奇怪。不但版本号有离奇的对应关系,而且需要配置环境变量。更多php相关经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php