# Class 'Imagick' not found Error
imagick とは
ImageMagick は GIF JPEG PNG PDF など 100 種類以上の画像フォーマット対応している画像処理モジュールです。
よく使われる imagick の画像編集機能
- 画像読み込み
- 画像に枠線引く
- 画像透明度操作
- 画像回転
- 画像にウォーターマーク追加
- サムネイル生成
イメージ操作でローカルで動くものが開発サーバーに上げたら imagick エラーで動かなくなりました。
ERROR: Severity: error --> Exception: Class 'Imagick' not found /container-directory/xxxxxxx/xxx/models/Image_model.php 161 arguments is ["xxxxxx\/xxxxx"]
yum install ImageMagick ImageMagick-devel gcc
sh-4.2# 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
これでいけると思いましたが、残念ながらエラー解消できません。
# imagick モジュール入ってるか確認
php -m | grep imagick
# imagick
imagick が出力されたら imagick モジュールが読み込まれていることです。
php.ini 設定ファイル編集で imagick ソケット追加
extension = imagick.so
# imagick モジュールをインストール
そもそも imagick はデフォルトに入ってないので、最初は手動でインストールする必要があります。
# CentOS の場合、pecl install
pecl コマンドで imagick インストールと勧められたので、pecl をインストールします。
yum install https://imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-libs-7.0.10-29.x86_64.rpm
yum install https://imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-7.0.10-29.x86_64.rpm
yum install https://imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-devel-7.0.10-29.x86_64.rpm
pecl install imagick
pecl がうまく行かないとき!
wget https://pecl.php.net/get/imagick-3.4.4.tgz
gunzip imagick-3.4.4.tgz
tar -xvf imagick-3.4.4.tar
cd imagick-3.4.4
zts-phpize
./configure --with-php-config=/usr/bin/zts-php-config
make
sudo make install
php.d の imagick.ini 設定
/etc/php.d/20-imagick.ini
extension=imagick
入っているかどうか確認
php -m | grep imagick
参考:ZTS 版の PHP に PECL 拡張モジュールをインストールする (opens new window)
# PHP 5 で imagick エラーになった
stack overflow は神的な存在で困った時に助けてくれます。
Fatal error: Class 'imagick' not found (opens new window)
sudo apt-get remove --purge php5-imagick && sudo apt-get install php5-imagick
# AWS EC2 で php imagick インストールする方法
AWS EC2 で正常にライブラリを読めない場合があるようですが、下記のコマンドでインストール
yum install php-pecl-imagick
# Docker compose docker-php-ext-enable imagick
dockerfile 使ってコンテナ作成する場合
RUN apt-get update \
&& apt-get install -y zlib1g-dev libpq-dev unzip libzip-dev imagemagick libmagickwand-dev
RUN docker-php-ext-install pdo_mysql mysqli zip \
&& pecl install imagick \
&& docker-php-ext-enable imagick