CentOS 7でPNG画像が読み込めない場合の対処方法

サムネイル画像が生成されない

CentOS 7に、MT6.3、MT6.5をインストールした環境でサムネイル画像が生成されない自体が発生した。

イメージドライバーをImageMagick、GDと変更したが変化はなく、コマンドを直接実行するとImage::Magick からサムネイルが正常に作成された。こまった。

環境

CentOS 7.6、7.7

再現手順

  1. アイテムの新規登録、アイテム・画像カスタムフィールドから画像をアップロードする。
  2. サーバーに画像がアップロードされるが、サムネイル画像が生成されず、0kbのファイルが生成される。

解決方法

暫定的な対策として、以下のImageMagickLoader.pl を「addons」フォルダに設置することで解消される可能性があります。

https://gist.github.com/usualoma/ae1a508ba5f2564b0b807c110296b5ae

反映手順

  1. MTの管理画面にログインする。
  2. 管理画面からアイテムの一覧を開き、サムネイルが生成されていないことを確認する。
  3. サーバーに接続し、ImageMagickLoader.pl を「addons」フォルダに設置する。(Community.pack などあるところ)
  4. サーバーから、生成が失敗したサムネイル画像が保存されている「asset_c」フォルダを削除する。
  5. MTの管理画面にログインする。
  6. 管理画面からアイテムの一覧を開き、サムネイルが生成されていることを確認する。
  7. おわり。

原因

@usualoma さんの記事「libmysqlclient.so.18はいかにしてlibz.so.1を壊したか)」によると、

「(perlでImage::Magickを使って)PNG画像のサムネイルが生成できない」という問題が発生し、条件を絞り込んでいくとどうも「DBD::mysqlをImage::Magickよりも先に読み込んだ場合に生成できなくなる」ということが分かりました。ポイントは、

MySQL Yum Repositoryのmysql-community-libs-compatでlibmysqlclient.so.18をインストールしている
libmysqlclient.so.18にリンクされた共有ライブラリを動的な環境で読み込んでいる
というころにあるようです。

ということが原因の様です。対応方法を教えていただきありがとうございました!!!!