• ベストアンサー

SESULinux で CGI をするには?

http://oshiete1.goo.ne.jp/qa3578211.html で質問していた、初心者です。再び、お願いいたします。 LAN の 中だけで Web サーバ を実行しています。 SUSELinux 10.1 OSS の ・・・/htdocs/cgi-bin というディレクトリで *.cgi が動くようになりました。 ところが、このディレクトリに、置いた *.html ファイルを別のコンピュータから見ようとすると、Internal Server Error となってしまいます。 Apache の error_log では、 (8)Exec format error: exec of '/srv/・・・/*.html' failed そして、 Premature end of script headers: *.html となっています。 この *.html を htdocs というデレクトリに置くと、OK なのですが...。 また、*.cgi ファイルに open(FILE, '>>aaa.txt') or die "$!"; print FILE ("200,$year年$mon月$day日 $hour時$min分\n"); close(FILE) と書くと、WindowsXP, Apache, ActivPerl では、 自動的に、aaa.txt というファイルができて、 そのファイルに 「200,日付時間」 が 書き込まれたのですが、 SUSELinux 10.1 OSS の ・・・/htdocs/cgi-bin では、 だめでした。これが、できると、大助かりです。 どうか、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • is907
  • ベストアンサー率55% (5/9)
回答No.2

ScriptAlias ディレクティブで指定したパスでは、拡張子に関係なく、全てのファイルを実行ファイルとして Apache は実行しようとします。 (なので、.cgi という拡張子を付けなくても実行されます) ですので、HTML ファイルも表示ではなく、実行しようとしてエラーになります。 No.1 さんが書かれているように、AddHandler を使えば、指定の拡張子のファイルを CGI として認識しないように指定できます。 http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addhandler 例) AddHandler default-handler .html .htm .gif .png .jpg .swf .css .js .xml .rdf CGI の実行に関しては以下を参考にしてください。 http://httpd.apache.org/docs/2.0/howto/cgi.html Windows 上で動いて、Linux 上だと駄目ということは、おそらく Perl のパス指定か、改行コードの問題でしょう。

ttaa100kkaa
質問者

お礼

is907さん、本当にありがとうございました。 実は AddHandler と言われても、私には、わかならなったのです。 しかし、例) を示していただいたことが救いとなりました。 うまくいきました。 - - - ANo1さんが指摘された"パーミッション"に関する心配はありますが・・・。 > ScriptAlias ディレクティブで指定したパス のことも、少しわかりました。また、apache の 説明サイトのアドレスを教えていただき、ありがとうございました。 私はインターネット検索をしたのですが、やり方が下手で、このサイトを見つけることができませんでした。 私の愚かな質問に、的確なお答え、 まことに、ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

どっちもApacheの設定のような気が。 cgi-binに*.htmlを置いて・・・の方ですが、そもそもcgi-binで htmlが許可されてないんじゃないでしょうか。 *.htmlはhtdocs以下cgi-bin以外に設置してやるか、httpd.confでAddHandler を書いておくかのどちらかでしょう。 ・・・SUSELinuxもApache使ってますよね。 で、ファイルの書き込みに関してもパーミッションの問題のような気がします。otherに権限がないのではないかと。 ただ、公開サーバにするなら777なんかはやめた方がいいと思いますが、 今回はLANの中のみということで、特に問題はないのかな。

ttaa100kkaa
質問者

お礼

まことに、ありがとうございました。 ANo2さんのお教えに従い、 - - - apache2/default-server.conf に AddHandler・・・を書き足したら、うまくいきました。しかし、 open(FILE, '>>aaa.txt') or die "$!"; print FILE ("200,$year年$mon月$day日 $hour時$min分\n"); close(FILE) をするには、 aaa.txt を 777 か 666 にしないと いけない、ということがわかりました。 > ただ、公開サーバにするなら777なんかは > やめた方がいいと思いますが、 > 今回はLANの中のみということで、 > 特に問題はないのかな。 とのご指摘、ありがとうございました。 不安ですが、Windows XP で、同じことをする場合も、同じ危険があるのでしょうね。--- 今、これを、Windows XP で LAN 内だけで、やっています。 LANの外へ公開することはありません。LAN 内の、自分だけの、ささやかな非力Webサーバです。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A