Premature end of script headers エラー

Movable Type 3.2 のテンプレートを更新したら,再構築を実行すると,Internal Server Error 500 が出た。何度やっても同じである。「すべてを再構築」ではなく,ひとつひとつ実行すると,エントリー・アーカイブの再構築だけがアウトとなり,アーカイブがきちんと生成されていないことがわかった。個別エントリーを更新する場合は問題ない。

httpd-error.log を確認すると,Premature end of script headers: mt.cgi, referer: http://.../cgi-bin/mt/mt.cgi とのエラーメッセージがある。このエラーは通常 cgi プログラムのパーミッションが適切でない場合に起こるようだが,同じ mt.cgi が動いたり動かなかったりするのだから,これが原因ではない。変更点はテンプレートを修正したこと。ずいぶん悩んだが,エントリー・アーカイブ用テンプレートの記述が一定量を越えるとこれが出るようなのである。

FreeBSD の syslog をみると,swap_pager: out of swap space エラーが大量に出力されていた。メモリを食い尽くしたらしいのである。ほんまかいな。1 件ずつで OK,まとめてやると NG ということは,ちょっと Movable Type の作りにも問題があるのではないかと思ってしまう。

Movable Type 3.2 のこの問題はそのうち Fix されるかもしれない。しようがないので,エントリー・アーカイブ用のテンプレートを少しずつ削って再構築が通るようにした。もう少し利口な回避策があるかもしれないが,私が利用させてもらっているのは個人向無償ライセンスなので問い合わせができない。過去のエントリーを 1 件ずつ更新なんてのもやってられない。