WordPress ヘルスチェックエラー対応 (imagickがインストールされていないか無効化)

久しぶりにWordpressでヘルスチェックをおこなうと下記のようjに、「オプションのモジュール imagickがインストールされていないか、無効化されています。」と表示されています。

imagick は以前の記事「WordPressに必要なPHPモジュール「imagick」をインストールする」でインストールしていますが、何故か最近にヘルスチェックでエラーになりました

SSHでログインして、CUIで「php -v」でバージョンで確認すると「PHP Warning: PHP Startup: Unable to load dynamic library 'imagick’~」とエラーが表示されます

$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick' (tried: /usr/lib64/php/modules/imagick (/usr/lib64/php/modules/imagick: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/imagick.so (libMagickWand-6.Q16.so.6: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 8.0.21 (cli) (built: Jul  6 2022 10:13:53) ( NTS gcc x86_64 )

エラーの内容をGoogleで検索すると、ImageMagickを更新すると解決する記事が多かったので、ImageMagickを再インストールしてみます

再インストールですが、以前の記事「WordPressに必要なPHPモジュール「imagick」をインストールする」でインストール方法があるので、「pecl install imagick」と叩いてインストールしてみますがエラーとなります

$ sudo pecl install imagick
PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick' (tried: /usr/lib64/php/modules/imagick (/usr/lib64/php/modules/imagick: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/imagick.so (libMagickWand-6.Q16.so.6: cannot open shared object file: No such file or directory)) in Unknown on line 0
pecl/imagick is already installed and is the same as the released version 3.7.0

pecl uninstall imagick」とコマンドを叩いて、アンインストールしても同じくエラーとなります

$ sudo pecl uninstall imagick
PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick' (tried: /usr/lib64/php/modules/imagick (/usr/lib64/php/modules/imagick: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/imagick.so (libMagickWand-6.Q16.so.6: cannot open shared object file: No such file or directory)) in Unknown on line 0
Unable to remove "extension=imagick.so" from php.ini
uninstall ok: channel://pecl.php.net/imagick-3.7.0

「imagick.so」が読み込まれているのでインストールやアンインストールでエラーとなるかも知れないので、「imagick.so」を読み込まないように「20-imagick.ini」の設定ファイルの箇所をコメントアウトします

# imagick.soを読み込んでいる箇所をコメントアウトします
$ sudo vim /etc/php.d/20-imagick.ini
;extension=imagick.so

# コメントアウトしたので、php-fpmを再起動します
$ sudo systemctl restart php-fpm

「imagick.so」を読み込まなくしたので、ImageMagickを再インストールしてみます

# エラーなくアンインストールできるか確認してみます
$ sudo pecl uninstall imagick

# 削除できたのでインストールしてみます
$ sudo pecl install imagick

「imagick.so」を読み込まなくしたら、ImageMagickを再インストールできたので、「imagick.so」を読み込んでphp-fpmを再起動します

# imagickを読み込むように変更します
$ sudo vim /etc/php.d/20-imagick.ini
;extension=imagick.so

# php-fpmを再起動
$ sudo systemctl restart php-fpm

今回は、「pecl uninstall imagick」→「pecl install imagick」との手順で再インストールしましたが、「pecl upgrade imagick」とupgradeで1回のコマンドでも再インストールできるかと思います。

$ pecl upgrade imagick

また、「dnf」,「yum」を利用して「imagick」をインストールした場合は、下記のように再インストールすればいいかと思います

# yum の場合
$ yum update php-pecl-imagick

# dnf の場合
$ dnf update php-pecl-imagick