WordPressのサイトヘルス画面でいつも表示される「推奨モジュールがインストールされていない」旨のメッセージ。
あくまで推奨モジュールですし、このうちのImageMagickパッケージがなくてもWordPressで画像生成(サムネイルとか)を扱うことはできるので、ほったらかしておきました。
が、今のんびりと学習しているシェルスクリプトの例題でImageMagickが前提となっているスクリプトがあり、その動作確認のためにもImageMagickパッケージをインストールしなければならないことに。
色々調べてみたところ、
# yum install ImageMagick
でImageMagickのインストールをすればよさそうなことがわかりました。
さらに、WordPressでImageMagickモジュールを有効にするには
/etc/php.iniの中に「extension = imagick.so」という一文を追加すればいいこともわかりました。
が、これらを設定した後にWordPressのサイトヘルスを確認してみたところ、なんと状況は変わらず。モジュールImageMagickは相変わらず有効になっていません。
参照したリンク先では、ImageMagickがモジュールとして読み込まれているかどうか確認するコマンドも説明されていたので試してみます。
# php -m | grep imagick
PHP Warning: PHP Startup: Unable to load dynamic library ‘imagick.so’ (tried: /usr/lib64/php/modules/imagick.so (/usr/lib64/php/modules/imagick.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/imagick.so.so (/usr/lib64/php/modules/imagick.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
imagcik.soが見つからないようですね・・・。きちんとインストールできていると、このコマンドに対して「ImageMagick」という文字列が返されるらしいのですが・・・。
さらに調べを進めると、どうやらImageMagickパッケージだけをインストールしてもダメらしいことがわかりました。このほかに、「gcc」と「ImageMagick-devel」という二つのパッケージも必要なようです。
# yum install gcc,ImageMagick-devel
これらもyumで簡単にインストールが完了。これでOKか!?とワクワクしながらサイトヘルス画面をチェックすると、これまた状況は変わりませんでした。
そこでさらにさらに調査をすると・・・。
なんだか「php-pecl-imagick.x86_64」というパッケージも必要らしいことがわかりました。
ただしPHPは複数バージョンにまたがってリポジトリがあるため、現在自分のサーバのPHPのバージョンを確認し(# php -v)、そのバージョンに適合したPHPのリポジトリを有効にしてインストールを行います。
# yum install –enablerepo=remi-php74 php-pecl-imagick.x86_64
適切なバージョンのリポジトリをチョイスしないと依存性エラーが発生しますので注意が必要です(インストールが完了しない)。
yumが無事に終了したら、本当に(?)インストールできたかどうかを次のコマンドを使って確認です。
# convert -version
Version: ImageMagick 6.9.10-68 Q16 x86_64 2021-10-14 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(3.1)
Delegates (built-in): bzlib cairo fontconfig freetype gslib jng jp2 jpeg lcms ltdl lzma openexr pangocairo png ps rsvg tiff wmf x xml zlib
# php -i | grep imagick
PHP Warning: Module ‘imagick’ already loaded in Unknown on line 0
/etc/php.d/40-imagick.ini,
imagick
imagick module => enabled
imagick module version => 3.7.0
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
imagick.allow_zero_dimension_images => 0 => 0
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0
imagick.set_single_thread => 1 => 1
imagick.shutdown_sleep_count => 10 => 10
imagick.skip_version_check => 1 => 1
二つ目のコマンドは先ほどはimagickが返されなかったことから考えて、どうやらパッケージはインストールできた模様です。
ではもう一度サイトヘルスを読み込んでみましょう!
・・・状況は変わりませんでした・・・orz
おかしいなぁ?と散々悩んだのですが、とりあえずphp.iniに手を加えているのだから、apacheを再起動させておくことに(apacheの再起動は必要ないという情報をどこかで見かけていた)。
# systemctl httpd restart
そしたらなんと。
付属している推奨モジュールからImageMagickがなくなりました!
どうやらImageMagickのインストールと有効化は成功したようです。
色々とパッケージをインストールしましたが、結局のところ最初の段階でapacheを再起動していれば済んでいたのかもしれませんね(笑)
が、その後。
さらにphp-pearというパッケージも必要らしいことがわかったので、この際ですからこれもyumでインストールしておきます。
# yum install –enablerepo=remi-php74 php-pear
これをインストールしたことで何が変わったのかわからないのですが、まぁ無事に動いているのでよしとしましょう(笑)