トップページ > サイト作成 > CMS > Movable Type で画像のサムネイルが作られないときの対応法

Movable Type で画像のサムネイルが作られないときの対応法

Movable Type の管理画面で画像をアップロードしたもののサムネイルが作成されない場合の対応方法について紹介する。

Movable Type で最新記事を数量指定で表示する方法

1. Movable Type のサムネイルとは

Movable Type のサムネイルとは、管理画面からアップロードした画像を縮小版として自動的に生成したファイルのことである。
管理画面のアセットで確認できる画像類はサムネイルが利用されている。

Movable Type のサムネイルの表示状態

Movable Type のサムネイルは主に管理画面内で利用され実際にアップロードした画像ファイルとは別物のため、サムネイルが生成されない環境下でもウェブサイトまたはブログの公開と運用に支障が無いことが多いが、サムネイル関連の MT タグを利用する場合はサムネイルが使えない環境では正常に動作しない問題が発生する。
また、サムネイルが作成できない環境下で画像のアップロードを行うとサムネイルの代わりに Movable Type が持つ代替え画像が表示される。

2. Movable Type でサムネイルが作られない原因

Movable Type でサムネイルが作られない原因は 2 点ある。
1 点目はサーバの公開ディレクトリ配下に生成されるサムネイルのディレクトリ(/var/www/html/site/assets_c)が無い、もしくは書き込み権限が無くサムネイルが適切に保存できる状態でない場合である。
もし assets_c が無ければ mkdir コマンドや FTP ソフトで作成し、Web サーバの権限で書き込めるようにパーミッションまたは所有者を設定するとよい。

Movable Type でサムネイルが作られない原因は 2 点ある。
2 点目はサムネイルを生成するモジュール「ImageMagick」がサーバにインストールされていない場合である。
ImageMagick がサーバにインストールされているかは Movable Type の管理画面と同じディレクトリに設置されている mt-check.cgi にブラウザでアクセスすると必要なモジュールがあるか確認することができ、ImageMagick がインストールされていなければ下図のように表示される。

ImageMagick がインストールされていない状態

3. サムネイル生成に必要な ImageMagick とは

サムネイル生成に必要な ImageMagick とはサーバ上で画像を作成したり編集するオープンソースのソフトウェアのことである。
GIF や JPEG、PNG といった一般的な画像形式から PDF を扱うこともできる。

ImageMagick を利用する場合はサーバ操作するようにコマンドで実行したり、プログラムから API を呼び出して利用する。
Movable Type の管理画面のようにアップロードした画像の縮小版を生成するためにサイズ変更したり、EC サイトで明細書などを PDF 出力する際に利用される。

4. ImageMagick のインストール方法

Movable Type で ImageMagick が利用できるようにするためには ImageMagic 本体と、Movable Type の動作言語である Perl から利用できるようにする Image::Magic(Image/Magick.pm) が必要になる。
RedHat/CentOS 環境では下記のコマンドでまずは ImageMagick 本体をインストールする。
関連するモジュールやソフトが多くインストールされるのがわかる。

# yum install ImageMagick
(略)
インストール済み:
  ImageMagick-6.9.10.86-1.el8.x86_64                                    LibRaw-0.19.5-2.el8.x86_64
  OpenEXR-libs-2.2.0-12.el8.x86_64                                      adobe-mappings-cmap-20171205-3.el8.noarch
  adobe-mappings-cmap-deprecated-20171205-3.el8.noarch                  adobe-mappings-pdf-20180407-1.el8.noarch
  atk-2.28.1-1.el8.x86_64                                               cairo-1.15.12-3.el8.x86_64
  fftw-libs-double-3.3.5-11.el8.x86_64                                  fribidi-1.0.4-8.el8.x86_64
  gdk-pixbuf2-modules-2.36.12-5.el8.x86_64                              google-droid-sans-fonts-20120715-13.el8.noarch
  graphite2-1.3.10-10.el8.x86_64                                        graphviz-2.40.1-40.el8.x86_64
  gtk-update-icon-cache-3.22.30-6.el8.x86_64                            gtk2-2.24.32-5.el8.x86_64
  harfbuzz-1.7.5-3.el8.x86_64                                           hicolor-icon-theme-0.17-2.el8.noarch
  ilmbase-2.2.0-13.el8.x86_64                                           jasper-libs-2.0.14-4.el8.x86_64
  jbig2dec-libs-0.16-1.el8.x86_64                                       lcms2-2.9-2.el8.x86_64
  libXaw-1.0.13-10.el8.x86_64                                           libXcomposite-0.4.4-14.el8.x86_64
  libXcursor-1.1.15-3.el8.x86_64                                        libXdamage-1.1.4-14.el8.x86_64
  libXfixes-5.0.3-7.el8.x86_64                                          libXft-2.3.3-1.el8.x86_64
  libXi-1.7.10-1.el8.x86_64                                             libXinerama-1.1.4-1.el8.x86_64
  libXmu-1.1.3-1.el8.x86_64                                             libXrandr-1.5.2-1.el8.x86_64
  libXrender-0.9.10-7.el8.x86_64                                        libXxf86misc-1.0.4-1.el8.x86_64
  libXxf86vm-1.1.4-9.el8.x86_64                                         libdatrie-0.2.9-7.el8.x86_64
  libfontenc-1.1.3-8.el8.x86_64                                         libgs-9.27-1.el8.x86_64
  libidn-1.34-5.el8.x86_64                                              libijs-0.35-5.el8.x86_64
  libmcpp-2.7.2-20.el8.x86_64                                           libpaper-1.1.24-22.el8.x86_64
  librsvg2-2.42.7-4.el8.x86_64                                          libthai-0.1.27-2.el8.x86_64
  libwmf-lite-0.2.9-8.el8_0.x86_64                                      mcpp-2.7.2-20.el8.x86_64
  openjpeg2-2.3.1-6.el8.x86_64                                          pango-1.42.4-6.el8.x86_64
  pixman-0.38.4-1.el8.x86_64                                            urw-base35-bookman-fonts-20170801-10.el8.noarch
  urw-base35-c059-fonts-20170801-10.el8.noarch                          urw-base35-d050000l-fonts-20170801-10.el8.noarch
  urw-base35-fonts-20170801-10.el8.noarch                               urw-base35-fonts-common-20170801-10.el8.noarch
  urw-base35-gothic-fonts-20170801-10.el8.noarch                        urw-base35-nimbus-mono-ps-fonts-20170801-10.el8.noarch
  urw-base35-nimbus-roman-fonts-20170801-10.el8.noarch                  urw-base35-nimbus-sans-fonts-20170801-10.el8.noarch
  urw-base35-p052-fonts-20170801-10.el8.noarch                          urw-base35-standard-symbols-ps-fonts-20170801-10.el8.noarch
  urw-base35-z003-fonts-20170801-10.el8.noarch                          xorg-x11-font-utils-1:7.5-40.el8.x86_64
  xorg-x11-fonts-ISO8859-1-100dpi-7.5-19.el8.noarch                     xorg-x11-server-utils-7.7-27.el8.x86_64
  avahi-libs-0.7-20.el8.x86_64                                          cups-libs-1:2.2.6-38.el8.x86_64
  gdk-pixbuf2-2.36.12-5.el8.x86_64                                      ImageMagick-libs-6.9.10.86-1.el8.x86_64
  libraqm-0.7.0-4.el8.x86_64

完了しました!

ここで mt-check.cgi で必要モジュールがインストールされているか確認しても依然、「サーバーに Image::Magickか、Image::Magickの動作に必要な他のモジュールがインストールされていません。」のままとなり、まだ不足があるのがわかる。

必要な Image::Magick がサーバにあるかは下記のコマンドで確認することができる。

# perl -MImage::Magick -e 'print $Image::Magick::VERSION'

次に、Perl から ImageMagic を利用するためのモジュールを下記のコマンドでインストールする。

# yum install ImageMagick-perl
(略)
インストール済み:
  ImageMagick-perl-6.9.10.86-1.el8.x86_64

再度、mt-check.cgi で必要モジュールがインストールされているか確認すると ImageMagick の存在を Movable Type が認識しているのがわかる。

ImageMagick がインストールされた状態

尚、Image::Magick は CPAN を利用して下記のコマンドでインストールすることもできるが、インストール途中でエラーになることが多いので利用しているサーバに応じて yum か CPAN でインストールするとよい。

# cpan -i Image::Magick

関連記事

@webolve をフォローしてください