PHPの警告「PHP Warning: Module “imagick” is already loaded in Unknown on line 0」

phpのバージョンを確認すると「PHP Warning: Module “imagick" is already loaded in Unknown on line 0」と渓谷メッセージが表示されていました

$ php -v
PHP Warning:  Module "imagick" is already loaded in Unknown on line 0
PHP 8.1.21 (cli) (built: Jul  4 2023 23:26:29) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.21, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.21, Copyright (c), by Zend Technologies

このワーニングメッセージですが、「imagick」モジュールがすでにロードされているので警告が出ています
これは、php.ini等にファイルに「imagick」モジュールが2回設定されていることが原因である可能性があるので、2回ロードされていないか調べます

「php.ini」で「imagick.so」がロードしていないか調べます。

$ grep "imagick.so" /etc/php.ini

私の環境では、imagick.so はロードしていないので、「/etc/php.d/」以下で読み込まれていないか調べます

$ ls -l /etc/php.d/ | grep imagick
-rw-r--r--    1 root root    21 Jul 25 14:51 20-imagick.ini
-rw-r--r--    1 root root   530 Mar 10 17:32 40-imagick.ini

20-imagick.ini」と「40-imagick.ini」のファイルが2つあるので、このファイルのどちらでも「imagick.so」が読み込まれている可能性が高いのでファイルの中身を確認します

$ grep extension /etc/php.d/20-imagick.ini 
extension=imagick.so

$ grep extension /etc/php.d/40-imagick.ini 
; Enable imagick extension module
extension = imagick.so

設定ファイルが2個あって、どちらともロードされているの原因です。片方のファイルを削除したら解決しました

$ cat /etc/php.d/20-imagick.ini 
extension=imagick.so
$ sudo rm -f /etc/php.d/20-imagick.ini