エックスサーバー(Xserver)でMovable Typeに画像をアップロードできない場合の対処

エックスサーバーにMovable Typeをインストールすると、画像のアップロードに失敗します。

他のサーバーから、既にアップロード画像が含まれているMTを移行した場合、管理画面の「アイテム > 一覧」に入った途端に500エラーとなります。

これは、MTで画像処理の標準となっているモジュールが、エックスサーバーではインストールされていないためです。

これは、エックスサーバーではOpenMPでの高速化を行っているのに対し、ImageMagickのマルチスレッド処理に不具合があることが原因と考えられています。
この件についても後述します。

最速の対応

/MTをインストールしたパス/mt-config.cgi
をテキストエディタで開き、環境変数の「ImageDriver」をコメントアウトして「GD」に書き換えてください。

mt-config_xserver.cgi
# ImageDriver ImageMagick
ImageDriver GD

エックスサーバーには「Image::Magick」「Imager」はありませんが、「GD」は標準でインストールされているようです。

もう少し本格的な対応

エックスサーバーはSSHを利用できるので、Perlモジュールを管理する、CPANのライブラリを許可ディレクトリ内に設置することもできるようです。
モジュールひとつを管理する目的ではちょっとコストが大きいので試したことがありませんが、GDよりも高速なImagerを利用したい方向けの情報としてご紹介します。

xserverでperlのcpanをローカル構築。local::lib
http://dq310.com/nm/xserver%e3%81%a7perl%e3%81%aecpan%e3%82%92%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%ab%e6%a7%8b%e7%af%89%e3%80%82locallib/

ImageMagickそのものを使用可能にする

先述のとおりですが、Movable Typeのコアファイルを「ImageMagickのみマルチスレッド処理を行わない」よう修正すると、ImageMagickのままで動作させられるようになります。
手順については下記を参照ください(藤本さんありがとうございます)。

OpenMPが有効なImageMagickとMovable Typeを組み合わせた際の不具合の回避策 - The blog of H.Fujimoto
https://www.h-fj.com/blog/archives/2017/08/15-103037.php

ファイルを一箇所修正するのみなので簡単ですが、予約投稿を行った際に、PageButeなどの多くのプラグインに内部的なエラーが出てしまうことを確認しています。
予約投稿を行わないのであれば問題ないかもしれませんが、GDに変更する対応が最も無難なようです。