9696 – 中文站 | 科普文章,文史知识,英文演讲和英文书籍

在CentOS7上安装匹配php8.2的ImageMagick和imagick扩展

如果把php升级到8.2,会发现php报一个错,imagick扩展的编译模块API低于php的编译模块API,导致imagick不可用。
WordPress里查看,也会发现显示imagick不可用,可能会影响WordPress的相关功能。
怎么样解决这个问题呢?
如果我们搜索,尝试安装新版本的ImageMagick和imagick扩展,会发现似乎只能从源代码自行编译安装,但是一旦编译安装就会发现一路的坑,就像俄罗斯套娃,不知道什么时候才能到最后一个坑。
并且直接编译安装ImageMagick需要新版的glibc,CentOS默认带的是2.17版,glibc是底层库,更新的话稍有问题就会导致系统无法登录,ssh进不了,宝塔面板无法打开,彻底失控,只能恢复到之前的版本,所以想要更新glibc的一定要小心了,本人就出现了上面的问题导致不得不从备份恢复。

本人在经历更新gcc,更新make,bison……安装和更新一系列东西以后编译安装glibc导致系统挂掉,然后恢复系统重新来,一直卡在编译glibc没有结果时,想到进一步搜索看看其他解决方案,终于找到完美的解决方案。

不需要自己编译,直接有现成的库可用。

我们需要这两个库:
ImageMagick7-libs-7.1.1.15-1.el7.remi.x86_64.rpm

php82-php-pecl-imagick-im7-3.7.0-2.el7.remi.x86_64.rpm

这是两个别人编好的针对CentOS7的库,适配的是CentOS7的环境,不需要更新gcc、make、glibc等软件。分别包含ImageMagick7.1.1.15和连接该版本的imagick扩展。

rpm安装这两个包的话,会发现一系列依赖不符合要求,只能手动从他们安装。

命令如下:
yum install ImageMagick7 https://rpms.remirepo.net/enterprise/7/remi/x86_64/ImageMagick7-libs-7.1.1.15-1.el7.remi.x86_64.rpm

如果提示需要安装依赖,就对应yum install安装一下即可。然后就安装好ImageMagick7啦。

再来安装imagick扩展,命令如下:
yum install php82-php-pecl-imagick-im7 https://rpms.remirepo.net/enterprise/7/remi/x86_64/php82-php-pecl-imagick-im7-3.7.0-2.el7.remi.x86_64.rpm

可能提示需要安装php82,没关系,就安装一下好了,会单独安装到以下路径:/opt/remi/php82/,这个php82不使用的话后续删掉就好了。

安装完以后,imagick.so就在这个路径:/opt/remi/php82/root/usr/lib64/php/modules/imagick.so

将imagick.so复制出来,放到在使用的php8.2的modules下面(一般在lib64/php/modules),如果有原来的,直接覆盖原来的就好啦。

现在用php -v看一下:

imagick安装完成
imagick安装完成

可以看到有一个警告,imagick是针对ImageMagick 1808编译的,但是安装的ImageMagick是1809,这完全不会有问题。并且imagick已经运行起来了,到WordPress的站点健康里看一下:

WordPress中的imagick相关信息
WordPress中的imagick相关信息

终于大功告成。

本文链接:

分享:
分享:

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部