CGIでinternal server error
cgiで簡単なプログラムを書き、-cオプションで構文チェックをする。
普通のPerlのプログラムを動作させるようにコマンドで実行。
期待するHTMLや計算結果を表示した。
$ perl -c xxxx.cgi
xxxx.cgi syntax OK
$ perl xxxx.cgi
(期待する結果を表示)
httpd.confでExecCGIをつけてapacheを再起動。
ここまでやっているのになぜかブラウザで確認しようとすると
500 Internal Server Error.
しょうがない。エラーログを確認だ。
tail /var/log/httpd/error_log| grep err
[Thu Nov 04 15:50:36 2010] [error] [client 127.0.0.1] suexec policy violation: see suexec log for more details
[Thu Nov 04 15:50:36 2010] [error] [client 127.0.0.1] Premature end of script headers: xxxx.cgi
ナニコレ。
ってことで、それらしいものをfindコマンドで見つける。
一個上の階層がその他の人に書き込み権限があるぞってことを言ってるみたいだ。
見てみたら、public_htmlがなぜか権限775。
これを、755に直したら見事修正完了。
# find / -name "*suexec*"
:
:
/var/log/httpd/suexec.log# more /var/log/httpd/suexec.log
[2010-11-04 15:50:36]: directory is writable by others: (/home/(ユーザ名)/public_html)