min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

fedora httpdのcgi-binで Internal Server Error の時は nkf -g でファイル属性を見る

pythonrubyでのcgi試したくてApachecgi-binに放り込んで実行したらこんなのがでる。

f:id:min117:20160213113219p:plain

ソースはこれ。

① ttest07.py

f:id:min117:20160213113846p:plain

ーーー

サーバ側の問題かなと思ってhttpd.confの設定を確認したが、問題ない。

cgi-binの設定は正しく入っている。

ーーー

いっぽうで、うまくいくスクリプトもある。

ソースはこれ。

② os_system.py

f:id:min117:20160213115017p:plain

結果がちゃんと返ってくる。

f:id:min117:20160213115220p:plain

ーーー

同じファイルなのに、①では失敗し、②では成功する。

原因がわからない。

ググると、ファイルのパーミッションかも、705 または 655 にすればいいと出てくるが、そもそも 777 だから問題ない。cgi-bin 自体も 777 にしてあるから、権限の問題ではないように思う。

ーーー

ログ確認。

f:id:min117:20160213113351p:plain

ヘッダが悪いとある。そんなはずはない。html じゃないんだし。

f:id:min117:20160213114042p:plain

何かおかしい。

ーーー

 原因と思われる記事みつけた。「バイナリで見てみた。文字コードが違う」とあある。

ch.nicovideo.jp

ーーー

バイナリから違う。たぶんこれが原因だ。

nkf -g で、ファイルを調べてみる。

nkf -g ttest07.py

nkf -g os_system.py

f:id:min117:20160213115516p:plain

エラーになる① はUTF-8

うまくっている② はASCII。

UTF-8じゃダメなのか?

Apacheの設定かもしれない。もう少し調べる。

ーーー

すごい参考になりそうなサイト見つけた。

sugutsukaeru.jp

ファイルがASCIIかUTF-8かの前に、このサイトに従って問題解決を図ってみる。

ーーー

まずはパーミッション。777はダメで、755にすべしとのこと。

# su

# chmod 755 cgi-bin/

しかし。

なぜか cgi-binフォルダ は rwxrwxrwx のまま。パーミッションが変更できない?

f:id:min117:20160213135942p:plain

どうやら、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/* 

f:id:min117:20160213135628p:plain

実行。

f:id:min117:20160213135706p:plain

だめだ。今度は403エラーになってしまう。ログをみてみる。

# vim /etc/httpd/logs/virtualhost.log

f:id:min117:20160213140317p:plain

f:id:min117:20160213140334p:plain