• ベストアンサー

tomcatでCGIが動きません

tomcatをwebサーバーにしてCGI(Perl)を動かそうとしています。 非常に単純なCGIを適切な場所に配備して動作させようとしていますが、 ネスケにて「ドキュメントにデータが含まれていません。」のエラーが 発生してしまいます。tomcatのlogsディレクトリーのログを見ると、 . . 2003-11-14 11:28:12 cgi: findCGI: FOUND cgi at C:\Program Files\...\webapps\test\WEB-INF\cgi\test.cgi . 2003-xx-xx 11:28:12 cgi: runCGI (stderr):Can't open perl script "C:\Program": No such file or directory 2003-xx-xx 11:28:12 cgi: runCGI: 1 lines received on stderr と出ているので、CGIは見つけているみたいですが、runCGIにてc:\programを探そうとして失敗している様です。 tomcatのインストール先はc:\program files\apache group.....なのですが、 結局のところ、tomcatのインストール先ディレクトリーにブランクがあると×という事なのでしょうか? 勿論、tomcatでCGIを使用する場合の各種設定(servlets-cgi.renametojarのりネームや、web.xml内の マップのコメントはずし等)は行っています。CGIは以下です。 #!C:/usr/local/bin/perl.exe print "<HTML><BODY>Helloworld</BODY></HTML>"; 環境は os:win2000 web server:tomcat4.1.27 active perl5.8 駄目ならば、apacheをwebサーバーにして再挑戦しようと思います。お願いします。

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

  • ベストアンサー
回答No.2

#1です。 Contextはどこにでも作れます。例えばC:\Tomcatというディレクトリを作成したとすると、必要なのは基本的に server.xml の変更と、C:\Tomcat\WEB-INF\web.xmlの作成だけです。 server.xmlは <!-- <Context path="" docBase="ROOT" debug="0"/> --> の次辺りにでも、 <Context path="/mycgi" docBase="C:\Tomcat" debug="0"/> を追加します。(細かい記述は<!-- Tomcat Examples Context -->以下等を参照して下さい←さしあたり不要ですが) C:\TomcatにはWEB-INFディレクトリを作成し、その下にweb.xmlを置きます。 web.xmlはたぶん今お作りになっているwebapps\test\WEB-INF\web.xmlのままでよいと思います。というかwebapps\testをそっくりコピーすればいいですね(^^; 以上で //localhost:8080/mycgi/cgi-bin/test.cgi は動作すると思いますよ(^^) (余談ですが私はこのサイトでは基本的にフォロー/アフターケアはしないので悪しからずご了承下さいませ)(今回は例外)

Vargas
質問者

お礼

2度にわたって回答頂きありがとうございました。理由がわかりすっきりしました。

その他の回答 (1)

回答No.1

Tomcat本体は空白を含むパスに対応していますが、CGIServletは(たしかSSIServletも)対応していないので、CGIスクリプトのパスには空白を含められない、ということになります。言い換えると、空白を含まないディレクトリにContextを作れば、そこで一応CGIも使えます。(だいぶ以前に、動くことは動くなというレベルの確認しかしてませんが^^;) Apacheが使えるならそちらの方がよいと思いますが。

Vargas
質問者

お礼

早速の回答ありがとうございます。そういう事ですか。ところで、大変おはずかしい話ですが、Tomcatインストールディレクトリー以下のwebappsディレクトリー以外にContextを作る事って出来るのでしょうか?もし不可能ならば、CGIを動かす為にTomcatをwebサーバーとして利用する時のインストール時の注意点はブランクを含まないディレクトリーにするという事になりますよね?(何もわざわざwebサーバーにtomcatを選択することは無いと思いますが。)

関連するQ&A