一、问题背景
在 WordPress 配置界面的工具中的站点健康检查出现 “缺少一个或多个推荐的模组”,以及 “可选的模组 exif 未被安装或已被禁用” 和 “可选的模组 imagick 未被安装或已被禁用”。
二、Exif 和 Imagick 是什么
由于我没有学过 PHP,不太了解这两个模组有什么具体的功能。感兴趣的可以详细去了解一下。
Exif
https://blog.csdn.net/gitblog_00991/article/details/143556269
Imagick
https://blog.csdn.net/gitblog_00047/article/details/139057418
三、安装配置
3.1 exif
由于我的 PHP 是通过源码安装的,所以我在我的源码包中找到了 exif 的文件夹,就省去了源码下载的过程。
将模组文件夹 exif/
拷贝到 PHP 的 ext 目录【extend】,我的目录是
/usr/local/php/include/php/ext # 找不到的话,可以用find命令搜索一下 find / -name "ext"
进入到 exif 目录,没有 configure 文件的话,执行 phpize
/usr/local/php/bin/phpize
源码安装三部曲
./configure --with-php-config=/usr/local/php/bin/php-config make make install
其中 /usr/local/php/bin/php-config
需要根据自己的环境修改,同理找不到的可以搜索一下。
三部曲执行完成后会在 exif 目录下的 modules 目录中生成 exif.so 文件,将它拷贝到 ext 目录下。
3.2 imagick
由于我的 PHP 源码包中没有找到 imagick 的包,只能从网上拉取。
wget https://pecl.php.net/get/imagick-3.7.0.tgz
源码包解压
tar -zxvf imagick-3.7.0.tgz
同样进入到 imagick 目录
cd imagick-3.7.0
如果目录中没有./configure 文件,那么可以执行 phpize
/usr/local/php/bin/phpize
执行完,configure 文件就出现了
源码安装三部曲,此时会发现./configure --with-php-config=/usr/local/php/bin/php-config
会报错:
checking ImageMagick MagickWand API configuration program... checking Testing /usr/local/bin/MagickWand-config... Doesn't exist checking Testing /usr/bin/MagickWand-config... Doesn't exist checking Testing /usr/sbin/bin/MagickWand-config... Doesn't exist checking Testing /opt/bin/MagickWand-config... Doesn't exist checking Testing /opt/local/bin/MagickWand-config... Doesn't exist configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.
原因是 PHP 的模组依附于 ImageMagick 而生效,而服务器中并没有安装 ImageMagick。故而,需要进行安装。可惜的是我的服务器使用源安装 yum install -y ImageMagick-devel
并没有找到包,所以还是用源码安装的方式。
wget https://imagemagick.org/archive/ImageMagick.tar.gz
解压源码包
tar -zxvf ImageMagick.tar.gz
再次进入目录
cd ImageMagick-7.1.1-41/
源码安装三部曲
./configure make make install
ImageMagick 安装完毕后,再回过头来,重新安装 imagick,便可成功。
安装成功后同样会在 imagick-3.7.0 目录下的 modules 中生成 imagick.so 文件,将它拷贝到 ext 目录下。
3.3 配置 PHP
编辑 php.ini
文件,我的路径是 /usr/local/php/etc/php.ini
,同理找不到的可以搜索一下。
extension_dir = "/usr/local/php/include/php/ext/" extension=exif.so extension=imagick.so
保存后退出文件。
重启 Web 服务器
nginx -s reload
验证模组是否安装成功
[root@dameng etc]# /usr/local/php/bin/php -m [PHP Modules] bcmath Core ctype curl date dom exif fileinfo filter ftp gd gettext hash iconv imagick ... ...
此时,回到 WordPress 配置界面查看站点健康依旧提示两模组未安装,需要重启 PHP 服务
[root@dameng ~]# service php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done
至此,再次查看站点健康便没有问题了。
问题解决。