mod_fcgidのFcgidMaxRequestLenではまる

サーバーの移転後に、Movable Typeの記事に画像をアップロードして入れようとしたところ、アップロードが終わった時点で「Internal Server Error」のエラーが表示されました。
mod_fcgidの「FcgidMaxRequestLen」に原因があることが分かりましたので、紹介しておきます。

当方のMovable Typeは、高速化のために、mod_fcgidMT-DispatchプラグインによるFastCGI化を行っています。
先日サーバーの移転を行いましたが、移転前からmod_fcgid+MT-Dispatchプラグインを使っていました。

移転前のサーバーでは、同じ環境で問題なく画像をアップロードすることができていました。
しかし、移転後のサーバーでは、前述したように、画像をアップロードするとInternal Serer Errorが表示されました。

Apacheのエラーログを見ると、以下のようなエラーが出ていました。

mod_fcgid: HTTP request length 132993 (so far) exceeds MaxRequestLen (131072)

mod_fcgidでは、「FcgidMaxRequestLen」の設定で、HTTPのリクエストの長さの上限を設定するようになっています。
mod_fcgidののバージョン2.3.6以降では、デフォルトでは131072バイトになっています。
そのため、画像をアップロードすると、上限を超えてしまってエラーが起こっていました。
一方、旧サーバーでは、古いバージョンのmod_fgidを使っていました。
その頃は上限のデフォルトが1GBだったので、アップロードしてもエラーが起こりませんでした。

そこで、Apacheのhttpd.confにMaxRequestLenの行を追加して、上限を10MBにしました。
これで画像をアップロードできるようになりました。

FcgidMaxRequestLen 10485760

なお、Movable Typeで画像のアップロードに失敗する場合、一般的にはImageMagickのインストールがうまくいっていないことが多いです。
たいていの共有レンタルサーバーではFastCGIは使えませんので(メモリを大きく消費するため)、FastCGIが原因になることは通常はありません。
記事に書いたように、まずはエラーログを確認して、エラーの内容を調べることが必要です。