こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Tomcat で CGI の実行結果が表示されません

Tomcat 6.0.24 を使って、perl または python で記述された cgi を実行したいのですが
実行されているのかされていないのか?がよくわからない状態で困っています。
※環境は Windows XP Pro SP3 上です。

具体的には、cgi 側で単純な HTML を print し、その結果をブラウザで確認したいだけなのですが
その print 結果が何も出力されません。
(ブラウザでアクセスすると、特にエラーは出ず、真っ白な画面)

◆試している cgi ソース(Perl)
--------------------------------------------
test.cgi
--------------------------------------------
#! c:/perl/bin/perl

print "Content-Type: text/html\n\n"
print "<html><body>Hello, World</body></html>"
--------------------------------------------

◆この test.cgi を配置している場所

 インストールディレクトリ/webapps/ROOT/WEB-INF/cgi/test.cgi

◆ブラウザでアクセスしている場所

 http://localhost:8080/cgi-bin/test.cgi

◆検証用 HTML の配置

 インストールディレクトリ/webapps/ROOT/WEB-INF/cgi/test.html
 →普通の HTML を確認のために配置。しかし、同様のアクセスで表示できず(画面真っ白)


ちなみに、Tomcat インストール後にやったことは以下です。
 1.インストールディレクトリ/conf/context.xml の 以下の部分に
   「privileged="true"」という記述を追加

   <Context>
    /*中略*/
   </Context>

   ↓

   <Context privileged="true">
    /*中略*/
   </Context>
  
 2.インストールディレクトリ/conf/web.xml の以下の部分のコメント化を解除

   <servlet>
    <servlet-name>cgi</servlet-name>
   /*中略*/
   </servlet>

   <servlet-mapping>
    <servlet-name>cgi</servlet-name>
    <url-pattern>/cgi-bin/*</url-pattern>
   </servlet-mapping>

 3.上の1、2では perl を実行してくれないので、
   インストールディレクトリ/conf/web.xml に以下を追加

   <init-param>
    <param-name>executable</param-name>
    <param-value>C:\Perl\bin\perl.exe</param-value>
   </init-param>

    ↓結果的に

   <servlet>
    <servlet-name>cgi</servlet-name>
   /*中略*/
    <init-param>
     <param-name>executable</param-name>
     <param-value>C:\Perl\bin\perl.exe</param-value>
    </init-param>
   </servlet>

以上ですが、何かヒントになるようなことでもよいので、識者の方、アドバイスをお願いいたします。

投稿日時 - 2010-02-13 15:37:41

QNo.5673237

困ってます

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

ApacheとかじゃなくてTomcatのWebサーバー機能で、ということなんですよね?

TomcatのCGIはあまり実績が無いので自身は無いのですけども、

#! c:/perl/bin/perl

っていうところは空白はあって大丈夫なのですか?

#!c:/perl/bin/perl

とか?

あと、.xml ファイルのエンコーディングはあっていますか?
ファイルをシフトJISで書いているのに冒頭に<?xml version="1.0" encoding="UTF-8"?>とかなっているとか。
Tomcatってインストール直後のこの辺がでたらめなのでチェックしてみてください。
基本はUTF8で書いてエンコードもUTF8にするのがベターです。

お役に立ちましたら幸いです。

投稿日時 - 2010-03-08 11:09:56

お礼

>maznobuさん

回答ありがとうございます。

今回のように tomcat のみの機能で cgi を実行するために、設定を行わなければいけないファイル(web.xml など)は iso-8859-1 という西ヨーロッパ言語で保存されていました。

試しに utf-8 などに統一させてみましたが、動作せず、です。。。

ネット上の情報で、tomcat で cgi を実行させるには、
 「ここをこのように変更する」
程度しか書いている情報はないのですが、その通りにやっても動かなかったりします。
ちなみに、知人は動いたようです。
知人も、その通りにやって、動くPCと動かないPCがあると言っていました。

なので、もはや Tomcat で動かさなければいけない、という理由はないので、断念しようと思います。

せっかく回答していただいたのに申し訳ないです。
ありがとうございました。

投稿日時 - 2010-03-14 18:41:43