apache の「Premature end of script headers」

ちょっとハマったのでメモ。
error.log に「Premature end of script headers」が出ている場合、
これは「とにかく何かおかしい」というエラーなので、
原因がわかりにくい場合が多い。

★「Premature end of script headers」が出たら、以下をチェック ★

1:こちらを参考にする
Premature end of script headersの解決法-超簡易版
以下のような、「test」をprintするだけの、簡単なファイルを作って試してみよう。
#!/usr/bin/[perl|ruby]
print "Content-type text/html¥n¥n" ;
print "test" ;
※rubyの場合はセミコロンなしね

<html><body><?php echo "test" ; ?></body></html>


2:コマンドラインで動かしてみる
  動かないなら論外。#!...に書いてあるパスが間違っている可能性大。
  デバッガ内ではなく、なるべくコマンドラインで。

3:cgi-bin 以外の場所にある場合、cgi-bin 以下へ移動
  apache の設定で、cgi-bin 以下でないと動かないかもしれないので、
  cgi-bin 以下に移動して動かしてみる

4:httpd.confを確認
  ・ディレクトリに ExecCGI が付いていない
    「Options ExecCGI」があるか確認。
    「AddHandler cgi-script .cgi」も確認。
  ・phpの場合は、AddType がされているか
    「AddType application/x-httpd-php .php」(php4)があるか確認。
  ・mod_*** を確認
    mod_ruby, libphp4 などが LoadModule されていること。
    mod_perl はなくても動くらしい。
    (多分あった方が、apache と同じプロセス上で実行されるので高速なんだよね?)

5:ディレクトリのパーミッション
  なんと!777 だと動かない!!(セキュリティの為か?)
  755 などにして試してみる。
  これは知らなかったので、ハマったよ(涙)

ま、そんなわけで、27日の納品へ向けて、明日も出勤します。
土曜日は関西も関東も OFF がありますね。
出席者の皆さん、私の分も楽しんでください(滂沱)
[PR]
by xiaoxia | 2004-09-24 22:30 | コメント御遠慮

ダメ女プログラマ&主婦&腐女子&バイオリン弾き


by 小霞