Movable Type4で投稿画面などを開く際500 Internal Server Errorが出る回避策

2018年10月12日Movable Type

Movable Type4で 投稿画面などを開く際、 500 Internal Server Error が出る回避策

エックスサーバーで動作しているMovable Type(以下MT)を編集する際、管理画面内のブログ記事を開いたりアイテムページを表示する際に500 Internal Server Errorが発生することがあります。

今回はそのエラーの確認方法と、解決策をシェアします。

今回のエラーが発生した環境

サーバー:エックスサーバー
CMS:Movable Type4.3.4-ja

記事の投稿画面や、アイテムを確認する際に500 Internal Server Errorが発生(管理画面のすべての中ページを開くと発生?)

エックスサーバーのエラーログ(一部抜粋)

エックスサーバーで500 Internal Server Error が発生した場合は、サーバーのコントロールパネルより「エラーログ」を確認することで、原因を突き止められることが多いです。

エックスサーバーのエラーログ
エックスサーバーのエラーログ

[cgi:error] AH01215: libgomp: Thread creation failed: Resource temporarily unavailable, referer: http://○○○.com/mt.cgi?__mode=list_entries&_type=&blog_id=1&filter=category_id&filter_val=2

エラーログをダウンロードして開き、ページの最下部を見るとこのようなエラー文が掲載されています。今回はこの「libgomp: Thread creation failed:」が肝のようです。

エックスサーバーではOpenMPという基盤を用いて高速処理が実現されているのですが、その場合サーバー内に導入されている画像処理ライブラリ「ImageMagick」の処理に不具合が発生することが原因のようです。

» OpenMPとは | 高速化・並列化 | 計算力学研究センター RCCM
» ImageMagick – Wikipedia

解決策

対策方法は2つあります。どちらかをお試しください。

① mt-config.cgiでImageMagickを無効化し、GDを使う

/MT本体/mt-config.cgi をローカルで開き、下記の部分を編集します。
ImageMagickをコメントアウトし、代わりにGD を使用するよう変更します。


# ImageDriver ImageMagick
ImageDriver GD

» GD Graphics Library – Wikipedia

② mt.cgiでImageMagickの処理を書き換える

/MT本体/mt.cgi をローカルで開き、下記の5-7行目部分を追記します。


use strict;
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';
use MT::Bootstrap App => 'MT::App::CMS';


use strict;
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';

BEGIN { 
  $ENV{MAGICK_THREAD_LIMIT}=1; 
} 

use MT::Bootstrap App => 'MT::App::CMS';

再度管理画面にアクセスし、正常に表示されていればOKです。

参考サイト

以下の記事を参考にさせていただきました。

» OpenMPが有効なImageMagickとMovable Typeを組み合わせた際の不具合の回避策 – The blog of H.Fujimoto
» エックスサーバー(Xserver)でMovable Typeに画像をアップロードできない場合の対処 – Qiita