XREA/CORESERVERでMovable TypeのCaptchaが表示されない不具合について
Tag:[Captcha, CORESERVER, ImageMagick, MovableType, TroubleShooting, XREA]
XREA/CORESERVERで、Movable TypeのCaptchaが表示されない不具合があります。Movable Type 4.x/5.xで発生するようです。
当ブログのコメントでやりとりがありましたので本エントリーで情報展開致します。
1.問題点
XREA/CORESERVERで、Movable Typeのコメント投稿にCaptchaを設定しても、Captcha画像が表示されません。
問題発生時のコメント投稿部分のCaptcha
本来のコメント投稿部分のCaptcha
事象を確認できたのはXREA+です。また頂いたコメントからCORE-MINIも発生するようです。CORE-Aでは不具合は確認できませんでした。
なお、Captchaの設定は、管理画面の「設定」→「コミュニケーション」でCAPTCHAプロバイダから「Movable Type既定」を選択して、インデックステンプレートを再構築します。
この作業を完了して、XREA/CORESERVERでCaptchaが表示されない場合は本エントリーの事象に遭遇している可能性があります。
2.原因
ネットで調べたところ、XREA/CORESERVERではImageMagickのmontageコマンドが動作しないようです。Movable TypeのCaptcha表示の内部処理では、montageコマンドを実行するためにPerlMagick APIのMontageを使用しているので、その部分でエラーになっているようです。
3.修正内容
lib/MT/Util/Captcha.pmを任意のエディタで開き、以下の部分を修正します(赤色部分を削除して、青色部分を追加)。
修正前
sub _generate_captcha {
…中略…
# Combine all the individual tiles into one block
my $tile_geom = join('x', $len, 1);
my $geometry_str = join('x', WIDTH(), HEIGHT());
my $im = $imbase->Montage(geometry => $geometry_str,
tile => $tile_geom);
$im->Blur();
…中略…
}
修正後
sub _generate_captcha {
…中略…
# Combine all the individual tiles into one block
my $tile_geom = join('x', $len, 1);
my $geometry_str = join('x', WIDTH(), HEIGHT());
my $im = $imbase->Append(stack=>'false');
$im->Blur();
…中略…
}
Appendは画像を結合するAPIです。stackの値に「false」を設定すると横並び(左から右)に結合します。「false」はデフォルト値なので、「stack=>''」としても同様の効果があります。「true」を設定するか、stackを記述しないと縦方向(上から下)に結合します。
参考:縦方向に結合したCaptcha
3.参考情報
参考情報は以下です。ありがとうございました。
- 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 "label" on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)