[FastCGI] 画像アップロード時の500エラーの対処法

画像やアイテムのアップロード時に出るエラー

FastCGI (FCGI)で先日read data timeout in 40 secondsに対処しましたが、今度は画像やアイテムのアップロード時に次のような画面になることがあります。

500-error.png

500 Internal Server Error

error_logを見ると、

[Mon Feb 17 12:00:00 2015] [warn] [client xxx.xxx.xxx.xxx] mod_fcgid: HTTP request length exceeds MaxRequestLen (131072), referer: https://www.markn.org/cgi-bin/...

といったエラーが出ています。

これは、FCGIがPOSTリクエストを受け付けるときに最大リクエストサイズがデフォルトで131,072バイト(128kB)になっていることが原因です。それ以上の大きさの画像やアイテムをアップロードしようとするとエラーになってしまいます。

修正方法

これでは困るので、修正します。

例により、httpd.confを修正します。

<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
SocketPath /tmp/fcgid_sock/
IPCConnectTimeout 20
IPCCommTimeout 300
MaxProcessCount 8
DefaultMaxClassProcessCount 2
TerminationScore 10
SpawnScore 80
IdleTimeout 300
MaxRequestLen 10485760
</IfModule>

上記の赤字部分を追加します。これでリクエストの大きさが最大10MB (10485760バイト)になるので、まずたいていの画像ファイルのアップロードでエラーになることはないでしょう。もし過不足ある場合には適宜修正してください。

こちらもよく読まれています