よもやディレクトリ権限を与え過ぎててハマるとは.
いつもはほとんど使われることのないサーバちゃん.
試しにCGIを動かしてみようと思ってタイトル通り,ハマったのでメモ.
設定
/etc/httpd/conf/httpd.conf を編集
AddHandler cgi-script .cgi
がコメントアウトされてるのではずして以下を追加.
Options ExecCGI
で,~/public_html/cgi_bin にサンプルを入れて実行を試みるも500エラー発生.
実行権限が与えられていることを確かめるが問題ない(と思ったんだけどまぁ問題あったんだよね).
解決
エラーログ(/var/log/httpd/error_log)を一応チェック.
"Premature end of script headers" と言われてる.言ってる意味がよくわからない.
調べても実行権限与えろだの,イマイチ当たり前の情報しか得られない.
とりあえずログを一個ずつチェック.
/var/log/httpd/suexec.logで
directory is writable by others
言われてるのを発見.
cgi-binの権限が775になってるのを発見.
755に変更したら動いたよ.
実行権限ついてるかはチェックするけど,書きこみ権限ついてないかまでチェックしませんよ...orz
という話.
調べたら,
Premature end of script headers - 帰ってきただらだら日記--
とまったく同じでした.
どうやら,
Red Hat の Apache はデフォルトで SuExec が有効で、その要件としてディレクトリが group writable でないということらしい。
ということらしい.
なんていったって,うちのサーバはFedoraCore 5ですからね.
いい加減新しくしようぜという話が大分前からあるけど,
就活とか終わるまでは無理かな.