pythonやrubyでのcgi試したくてApacheのcgi-binに放り込んで実行したらこんなのがでる。
ソースはこれ。
① ttest07.py
ーーー
サーバ側の問題かなと思ってhttpd.confの設定を確認したが、問題ない。
cgi-binの設定は正しく入っている。
ーーー
いっぽうで、うまくいくスクリプトもある。
ソースはこれ。
② os_system.py
結果がちゃんと返ってくる。
ーーー
同じファイルなのに、①では失敗し、②では成功する。
原因がわからない。
ググると、ファイルのパーミッションかも、705 または 655 にすればいいと出てくるが、そもそも 777 だから問題ない。cgi-bin 自体も 777 にしてあるから、権限の問題ではないように思う。
ーーー
ログ確認。
ヘッダが悪いとある。そんなはずはない。html じゃないんだし。
何かおかしい。
ーーー
原因と思われる記事みつけた。「バイナリで見てみた。文字コードが違う」とあある。
ーーー
バイナリから違う。たぶんこれが原因だ。
nkf -g で、ファイルを調べてみる。
nkf -g ttest07.py
nkf -g os_system.py
エラーになる① はUTF-8。
うまくっている② はASCII。
UTF-8じゃダメなのか?
Apacheの設定かもしれない。もう少し調べる。
ーーー
すごい参考になりそうなサイト見つけた。
ファイルがASCIIかUTF-8かの前に、このサイトに従って問題解決を図ってみる。
ーーー
まずはパーミッション。777はダメで、755にすべしとのこと。
# su
# chmod 755 cgi-bin/
しかし。
なぜか cgi-binフォルダ は rwxrwxrwx のまま。パーミッションが変更できない?
どうやら、cgi-binフォルダが外付けHDD(NTFSフォーマット)のうえにあるのが原因らしい。外付けHDDではパーミッションを変更できない。
話が別の問題にすり替わってしまった。外付けHDDでのパーミッションは /etc/fstab の記載とかによるんだろうけど、どんどん違う方向に進んでしまうので、今回は「cgi-bin」を デスクトップ(/home/fedora/Desktop)に移動させることで一時的に対処する。Desktopフォルダはext3なので、パーミッションは自由に変更できる。
# mv cgi-bin/ /home/fedora/Desktop/
# chmod 755 cgi-bin/ cgi-bin/*
実行。
だめだ。今度は403エラーになってしまう。ログをみてみる。
# vim /etc/httpd/logs/virtualhost.log