Movable Type 5で「サーバーに Image::Magickか、Image::Magickの動作に必要な他のモジュールがインストールされていません。」となる事象について
Movable Type 5で「サーバーに Image::Magickか、Image::Magickの動作に必要な他のモジュールがインストールされていません。」となる事象の対処方法を紹介します。ご質問をいただきましたので本エントリーで情報展開致します。
注:ホテルで借りたPCで動作確認しており、再起動するとインストールした環境がすべてクリアされてしまうため、再起動しないと確認できない部分は割愛しています。よって本エントリーの内容では解消できない可能性もあります。予めご了承ください。
2010.09.13追記
関連記事で「ActivePerl 5.10でImageMagickが正常に動作しない不具合の対処」をエントリーしました。
1.問題点
Windows+XAMPP環境でMovable Type 5を利用するとImage::Magickが認識されず、mt-check.cgiを実行すると、「サーバーに Image::Magickか、Image::Magickの動作に必要な他のモジュールがインストールされていません。」というメッセージが表示されます。
また、MTのダッシュボードにも「Image::Magickが設定されていません。Image::Magickがインストールされていないかまたは正しく設定されていないため、Movable Typeのユーザー画像機能を利用できません。この機能を利用するには、Image::Magickをインストールするか、他のイメージドライバを使用する設定を行う必要があります。」というメッセージが表示されます。
Image::Magickが正常に認識されなかった環境は以下です。
- XAMPP 1.7.3(Apache2.2.14)
- ActivePerl 5.10.1 Build 1007
- ImageMagick 6.5.7-10 Q8
- PerlMagick(Image-Magick-6.5.7)
PerlMagickは、MS-DOSプロンプトを使ってppmコマンドでインストールしました。
ppm install http://www.bribes.org/perl/ppm/Image-Magick.ppd
ImageMagickはとりあえずPerlMagickに合ったバージョンをインストールしました。質問者の方のコメントでは「ImageMagick 6.6.2-6 Q8でもNG」とのことでした。
また、ダッシュボードでエラーメッセージが発生している部分をトレース結果も掲載しておきます。関係ありそうな箇所を赤色で示しています。
tmpl/cms/dashboard.tmpl
…前略…
<mt:unless name="can_use_userpic">
<div id="userpic" class="permission-error msg msg-info">
<div class="title"><__trans phrase="Image::Magick is not configured."> <a href="#" class="detail-link"><__trans phrase="Detail"></a></div>
<div class="detail">
<p><__trans phrase="Image::Magick is either not present on your server or incorrectly configured. Due to that, you will not be able to use Movable Type's userpics feature. If you wish to use that feature, please install Image::Magick or use an alternative image driver."></p>
</div>
</div>
</mt:unless>
…後略…
lib/MT/CMS/Dashboard.pm
sub dashboard {
my $app = shift;
my (%param) = @_;
…中略…
eval { require MT::Image; MT::Image->new or die; };
$param->{can_use_userpic} = $@ ? 0 : 1;
…後略…
}
lib/MT/Image.pm
sub new {
my $class = shift;
$class .= "::" . MT->config->ImageDriver;
my $image = bless {}, $class;
$image->load_driver
or return $class->error( $image->errstr );
if (@_) {
$image->init(@_)
or return $class->error( $image->errstr );
}
$image;
}
lib/MT/Image.pm
sub load_driver {
my $image = shift;
eval { require Image::Magick };
if (my $err = $@) {
return $image->error(MT->translate("Can't load Image::Magick: [_1]", $err));
}
1;
}
上記のエラーの詳細(日本語部分は文字化けして判読不能)
Can't load 'C:/usr/site/lib/auto/Image/Magick/Magick.dll' for module Image::Magick: load_file:?c.A???[????????B?X?^?b?N???I?[?o?[?t???[????????B at C:/usr/lib/DynaLoader.pm line 201. at lib/MT/Image.pm line 188 Compilation failed in require at lib/MT/Image.pm line 188.
2.対処方法
Windowsの環境変数にシステム環境変数「MAGICK_HOME」を追加します。システム環境変数の設定方法は次の通りです。
マイコンピュータを右クリックして「プロパティ」を選択。開いた画面で「詳細設定」タブをクリックして、「環境変数」をクリック。
システム環境変数の「新規」をクリック。
開いた「システム変数の編集」画面に次の内容を入力して、「OK」をクリック。以降、元の画面で「OK」をクリック。
- 環境変数名:
MAGICK_PATHMAGICK_HOME - パス:インストールしたImageMagickのパス(「C¥Program Files¥ImageMagick-6.5.7-Q8」など)
これでダッシュボード画面では正常に認識されるようになりました。ただし、アイテム一覧画面に移動するとエラーが発生します。再起動を行えば解消されるかもしれませんが、こちらについては別途確認したいと思います。
上記の手順以外で適切な方法がありましたらご連絡ください。藤本壱さんの記事「MTOS活用テクニックの ActivePerl/ImageMagickインストール手順の修正」では、
- ActivePerlのバージョンとImageMacigkのPerlモジュールのバージョンを合わせること
- ppmを利用しないこと
が書かれています(こちらの手順は時間の都合上、未確認です)。
3.参考サイト
本記事の参考サイトは以下です。ありがとうございました。
2010.09.07
環境変数名を修正しました。
- MovableTypeプラグインの独自CGIをNginxに対応させる方法
- Movable Type 5で「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーになる場合の対処
- 旧バージョンのMTでPerl5.26(Perl5.24以降)に対応する方法
- MT6.2のファイルアップロードで「Undefined subroutine &POSIX::strftime」になる問題の対処
- Movable Typeのファイルアップロードで「アップロードしたファイルは大きすぎます。」というエラーになる場合の対処
- Movable Typeのパスワード変更で「URLが不正です。」というエラーなる件についての対処
- Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」となる場合の対処
- Movable TypeでMTPageNextタグが効かなくなる不具合について
- Movable Typeの復元で「Request-URI Too Large」になるときの対処
- サーバ故障と「Connection error: Too many connections」エラーおよびMySQLテーブル破損について
- Movable Typeでエラー発生箇所を特定する方法
- IE9でMovable Typeを利用する方法
- MTIfタグにtagモディファイアを利用する場合の注意事項
- Movable Type 5のブログの設定で「Can't call method &quot;label&quot; on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)