プロジェクト

全般

プロフィール

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があること