2006.01.10 (火)

[diary ]
CGIを実行できない!?

新しいサーバーに Fedora Core 4 をインストールして、CGIを動かそうとしました。ところが全然動いてくれません。設定はいつもの通りにやっていて間違っているところは無さそうなのにエラーになってしまいます。Apache のログにはこんなメッセージが吐かれています。

Premature end of script headers: xxxx.cgi

このメッセージは CGI の出力が無いか、途中で切れている可能性を示しています。あるいは、まったく実行できていないかもしれません。 httpd.conf にはこう書いてます。

UserDir public_html

<Directory /home/*/public_html/cgi-bin>
    AddHandler cgi-script .cgi
    Options ExecCGI
</Directory>

いったいどこが間違っているのでしょうか。同じ設定で別なサーバーでは動いています。こういう時はパーミッションや実行権の設定、perlのパスなどが怪しいのですがどれもおかしなところは見当たりません。すっかりはまってしまいました。

いろいろ探して見つけたのは、suEXEC の影響です。Fedora Core 4 に標準で含まれている Apache は suEXEC が有効になっているのですね。suEXEC を使うと、ユーザーごとの public_html 配下の CGI は、そのディレクトリの持ち主の権限で実行してくれます。この時、CGIの実行には厳しいチェックがかります。今回は、cgi-bin ディレクトリのパーミッションにグループ書き込みが許可されていたことが原因でした。suEXEC では本人以外が書き込める状態のCGIは実行できないのです。

サーバーの運用にはあらゆる細かい仕様を把握しておかないと、ちょっと環境が変わるだけでトラブってしまいます。もっといろいろ自分で動かしてみなくては。

   

トラックバック(0)

トラックバックURL: http://blog.bibinko.com/mt-bin/mt-tb.cgi/1010

コメントする

アーカイブ

Photo Calendar

最近のコメント

最近のトラックバック