Premature end of script headers

久しぶりに激しくハマったので書いておく。
CGI をおいてアクセスしたら 500 Internal Server Error が帰ってくる。これが、error_log には Premature end of script headers としか書いてない。親切すぎ。もうさっぱり分からなかったが、思いつきで chmod g-w . したら成功した。

ここから逆算してググったらわかった。ぜんぜん知らなかったが、Red HatApache はデフォルトで SuExec が有効で、その要件としてディレクトリが group writable でないということらしい。解決後にわかったのだけど /var/log/httpd/suexec.log にはそのことを説明してあった。はうー。

教訓。/etc/httpd/logs ではなく、/var/log/httpd をみること。

追記 2008-7-1

このエントリのタイトルでググったときに、ものすごい上位にきててなんだか申し訳ないので、ふつうのことも書いてみるテスト。

上記のような環境に依存した話でなくて、ふつうにこのエラーで悩んでるということはおそらくCGIに不慣れか、頭に血が上って基本的なことを思い出せなくなってるかどっちかのはずだから、まずは
しかし、まだ動かない! - Apache Tutorial: CGI による動的コンテンツ
を見るのがいいと思う。あとは、ほかの検索結果をどうぞ。