windows环境,php如何正确安装并配置imagick扩展?
发布于 作者:苏南大叔 来源:程序如此灵动~调试一个项目的时候,发现其需要开启imagick
扩展。这个扩展很古老了,苏南大叔很多年前碰到的第一个php
扩展就是它。那么,在最新版本的php
中,如何开启这个imagick
扩展呢?首先要说明一点的是:这个imagick
扩展确实是和其它扩展不一样,按照普通的思路去安装imagick
扩展的话,会失败的。
大家好,这里是苏南大叔的程序如此灵动博客,这里介绍苏南大叔和计算机代码的故事。本文描述,在php
中开启imagick
扩展的方法。测试环境:win10
,php@7.4.29-nts
,php-imagick@3.7.0
,imagick@7.1.0
。
下载扩展
下载扩展dll
用于扩展的开启准备。
首先,选择【可选】下载安装最新的php7
系列的php@7.4.29
。
- https://windows.php.net/download/
- https://windows.php.net/downloads/releases/php-7.4.29-nts-Win32-vc15-x64.zip
其次,下载的是pecl
扩展php-imagick
【必选】,这里还是下载的最新版的imagick
扩展。一定要注意和php
的版本及vc
版本一一对应。这里值得特殊提一下的是:php-imagick@3.7.0
提供的dll
最低支持php@7.4
,然后就是php@8
系列了。
- https://pecl.php.net/package/imagick
- https://pecl.php.net/package/imagick/3.7.0/windows
- https://windows.php.net/downloads/pecl/releases/imagick/3.7.0/
- https://windows.php.net/downloads/pecl/releases/imagick/3.7.0/php_imagick-3.7.0-7.4-nts-vc15-x64.zip
到这里的时候,看起来还是比较正常。把php_imagick.dll
拖出来,放到ext/
目录下面。然后,配置php.ini
开启这个php-imagick
扩展。
这里有个坑就是: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()
页面,就可以显示该扩展加载成功!
总结一下,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
绿色版。
- https://imagemagick.org/index.php
- https://imagemagick.org/script/download.php#windows
- https://download.imagemagick.org/ImageMagick/download/binaries/ImageMagick-7.1.0-portable-Q16-HDRI-x64.zip
并配置环境变量,设置MAGICK_HOME
为本机路径的<imagick>/
的可执行程序目录。(有的imagick
版本是在bin
目录里面)
在网上的相关教程里面,这里都是必须配置的。不过在苏南大叔的测试实验中,这个步骤没有操作的话,imagick
的代码也是可以正常运行的。
相关文档
这个imagick
扩展甚至还有个官方网站,大家可以参考下面的文章:
更多php
扩展安装的文章:
- https://newsn.net/say/php-screw-plus.html
- https://newsn.net/say/php-extension-evalhook.html
- https://newsn.net/say/php-mcrypt-mac.html
- https://newsn.net/say/php-mcrypt-centos.html
综述
对比php
的其它扩展,这个imagick
扩展非常奇怪,使用安装方式都非常奇怪。不但版本号有离奇的对应关系,而且需要配置环境变量。更多php
相关经验文章,请点击:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。