はまった・・・
たった↓これだけの CGI が Premature end of script headers エラーで実行できず。
#!/bin/sh
echo "Content-type: text/html"
echo ""
echo "<html><head><title>TEST CGI</title></head>"
echo "<body><h1>TEST</h1></body></html>"
コマンドラインからの実行じゃ全然問題ないのに。
なんでやねん!Perl の CGI も動かんなあ・・・と。
結局、/var/log/httpd/suexec.log が存在しているのを発見して、suEXEC が有効になっていることに気づいた。(^^;
ログみたら、もう、小うるさい警告が・・・
[2008-08-29 14:13:14]: uid: (512/mufufu) gid: (512/512) cmd: test.cgi
[2008-08-29 14:13:14]: directory is writable by others: (/home/mufufu/web/cgi-bin)
現在のシステムでは、suEXEC の満足行く権限設定やディレクトリ構造を採ることは無理だし、そもそも、suEXEC 使えば安全度が上がるようなシステム構成じゃないんで、とりあえず suEXEC を無効化。(suexec を別名にしちゃうだけだけど)
[root]# ls -la /usr/sbin/suexec
-r-s--x--- 1 root apache 14221 Jan 24 2008 /usr/sbin/suexec
[root]# mv /usr/sbin/suexec /usr/sbin/suexec_20080829
suEXEC 信者は怒るだろうけどなあ。(笑)
こうしておいて、Apache を立ち上げ直せばOK。
今までなんだったんだといいたくなるくらい、さくさく CGI が動く。
いつもは Apache は自分でソースから make することがほとんで、そん時に suEXEC なんか有効にしたことないし、よもやパッケージでは suEXEC が有効状態で make されてるなんて思いもせんかった。(^^;
ほんま、久しぶりに Apache 関係ではまったわ。まだまだ勉強じゃのお。
コメントする