phpアップデート後にimagemagickが見つからなくなる対応¶
phpを更新したあと、下記のようにimagemagickのライブラリが見つからなくなる現象への対策。
# php -v PHP Warning: PHP Startup: Unable to load dynamic library 'imagick.so' (tried: /usr/lib64/php/modules/imagick.so (libMagickWand-6.Q16.so.6: 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 PHP 7.4.30 (cli) (built: Jun 7 2022 08:38:19) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.30, Copyright (c), by Zend Technologie
既にimagickは最新版になっている&この事象が起きると「見つからないけど導入済みかつ最新版」
と言うことで再導入アクションが走らなくなる。
対応としては、一度imagickを読み込まない状態でphpを再起動し、imagemagickをアンインストール後
再インストールし直す。
下記のファイルでライブラリの読込をコメントアウトする。
# vi /etc/php.d/20-imagick.ini ------------------------------ #extension=imagick.so
php-fpmを再起動し、phpコマンドでimagemagickのエラーが出ないことを確認する。
# systemctl restart php-fpm # php -v 当初の状態のエラーが出ないこと
この状態で下記のようにimagemagickをインストールし直す。
# pecl uninstall imagick # pecl install imagick
成功したらライブラリ読込のコメントアウトを戻す。
# vi /etc/php.d/20-imagick.ini ------------------------------ extension=imagick.so
php-fpmを再起動し、phpコマンドでimagemagickが読み込まれつつエラーが出ないことを確認する。
# systemctl restart php-fpm # php -v 当初の状態のエラーが出ないこと # pecl list Installed packages, channel pecl.php.net: ========================================= Package Version State apcu 5.1.18 stable imagick 3.7.0 stable libsodium 2.0.23 stable zip 1.18.2 stable imagickがあること