php 安装imagic扩展及服务

andydaopeng / 2024-01-30 / 原文

最近的PHP项目中,需要用到切图和缩图的效果,在本地windows开发环境,安装过程遇到好多问题,在此与大家分享。

php官网里,一大群老外也看不懂这玩意怎么装,主要原因在于,php版本庞杂,还有x86 x64 nts ts,对应的imagick版本也不一定相同,imagick第一道关还算容易,总还是有办法装上,imagick对应的ImageMagick程序又不一定了,又出现庞杂的版本,即使官网给出的依赖版本也没有效果,同时也没有官方任何地方给出一个合理的安装方法,真是变态。从中文到英文,从php文档到百度、谷歌资料,各种版本,全是坑!

使用环境

 

安装步骤

根据环境下载合适的 imagick扩展 和 imagemagick程序

1.下载拓展

下载地址一: http://windows.php.net/downloads/pecl/releases/imagick/
下载地址二: https://pecl.php.net/package/imagick
要点: 注意对应php版本 ts还是nts x86还是x64
这里以phpinfo()为准

所以我应该下载imagick 3.4.3版本 PHP5.6  Non Thread Safe (NTS) x86 的拓展——php_imagick-3.4.3-5.6-nts-vc11-x86.zip

2. 安装拓展

  1. 解压上述文件后,将php_imagick.dll复制到php/ext目录,或者其他你的存放拓展的目录
  2. 修改php.ini 加上extension=php_imagick.dll,注意php可能有多个ini,以phpinfo为准
  3. 此时复制解压上述文件目录中其他dll到php目录,重启apache,此时phpinfo显示拓展安装成功,但是 ImageMagick number of supported formats为0,到这里成功安装了一半

注意,如果安装后还是找不到imagic扩展或者phpinfo()中不显示的话:

来源:https://newsn.net/say/php-imagick.html

启后,刷新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

3 下载imagemagick程序

下载地址:http://windows.php.net/downloads/pecl/deps/
imagemagick还有官网下载,此处不鼓励从imagemagick官方下载,他们的网站上我并没有找到历史版本下载,安装失败的几率很大
下载与phpinfo提示一致的版本,此时需要注意  1.软件版本对应     2.vc11还是vc14 3.x86还是x64 都要以phpinfo为准,我的

所以我下载 ImageMagick-6.9.3-7

4 安装imagemagick程序

  1. 下载的文件解压后,将程序整体复制到无空格 无中文字符的目录中 E:\Program Files (x86)\
  2. 配置环境变量,在“此电脑”右键“属性”,以此点击“高级” “环境变量” ,在 “系统变量”中找到键为path的数据,双击path,选择“新建”,将刚刚放程序的目录“E:\Program Files (x86)\ImageMagick\bin”填入即可
  3. 将“E:\Program Files (x86)\ImageMagick\bin”目录中的所有的以“.DLL‘为后缀的文件放入php的根目录,应该有145个

 

重启计算机