• 締切済み

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

  • CGI
  • 回答数1
  • ありがとう数4

みんなの回答

回答No.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にするのがベターです。 お役に立ちましたら幸いです。

RetraTurbo
質問者

お礼

>maznobuさん 回答ありがとうございます。 今回のように tomcat のみの機能で cgi を実行するために、設定を行わなければいけないファイル(web.xml など)は iso-8859-1 という西ヨーロッパ言語で保存されていました。 試しに utf-8 などに統一させてみましたが、動作せず、です。。。 ネット上の情報で、tomcat で cgi を実行させるには、  「ここをこのように変更する」 程度しか書いている情報はないのですが、その通りにやっても動かなかったりします。 ちなみに、知人は動いたようです。 知人も、その通りにやって、動くPCと動かないPCがあると言っていました。 なので、もはや Tomcat で動かさなければいけない、という理由はないので、断念しようと思います。 せっかく回答していただいたのに申し訳ないです。 ありがとうございました。

関連するQ&A

  • 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サーバーにして再挑戦しようと思います。お願いします。

    • ベストアンサー
    • CGI
  • サーブレットで絵文字を使用するには

    JSPで絵文字を使用するには? JSPでimodeの絵文字を使用する方法をどなたかご存知でしょうか? Shift_JISでimodeの絵文字をJSPファイルに埋め込んだところ、 内部で変換がうまくいかないのかエラーになってしまいました。 環境は WindowsXP + Tomcat5.0.24 です。 JSPファイルの先頭には <%@ page contentType="text/html; charset=Shift_JIS" %> という記述をしています。 また、conf/web.xmlにShift_JIS用の記述をしています。 <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>javaEncoding</param-name> <param-value>Shift_JIS</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>

    • ベストアンサー
    • Java
  • xamppを使用してCGIが実行できなくて困っています。

    こんにちは。自分で作ったホームページにアクセスカウンターや掲示板を設置したいと思っています。 そこで、xamppを使用し、CGI(アクセスカウンターや掲示板)を設置したいのですが、できません。設置の仕方、設置場所などお分かりの方、教えてください!! いろんなサイト(xamppのホームページも含め)を探してみて、「httpd.conf」の中を変えると書いてあったので、そのとおりに変えてみました。 (DocumentRootの下に <Directory "C:/www"> AllowOverride All Options All </Directory> を加えるといったもの)しかし、実行できず、サーバエラーが出ます。 設置場所:xampp/htdocs/test.cgi アクセス:http://localhost/test.cgi エラー内容:Premature end of script headers: test.cgi [test.cgi]↓↓ #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html><head>"; print "<title>TEST</title>; print "</head><body>\n; print "TEST<br>"; print "</body></html>\n"; [httpd.conf]の変更点 DocumentRoot "C:/xampp/htdocs"の下に <Directory "C:/xampp/htdocs"> AllowOverride All Options All </Directory> を追加。 分かりづらかったり、言葉が足りなかったらすみません。できなくて困ってます。。。どうかお願いします。

    • 締切済み
    • CGI
  • tomcatのweb.xmlについて

    tomcatのweb.xmlについての質問です。 eclipseにサーバーからソースをインポートしてプロジェクトを作成しました。 ビルドパス等の問題は解決したのですが、web.xmlの以下に示す箇所だけどうしてもエラーが解消出来ません。 色々調べてみた結果、要素の順番が悪いのだろうとは理解出来ましたが、順番を変えてもエラーが出続けます。 どこがいけないのでしょうか? web.xmlの記述 <servlet> <init-param> <param-name>browseDirs</param-name> <param-value>false</param-value></init-param> <servlet-name>FileServlet</servlet-name> <servlet-class>jrun.servlet.file.FileServlet</servlet-class> <description>This servlet may override a corresponding FileServlet in SERVER-INF/default-web.xml.If removed, the servlet in default-web.xml will be used.</description> </servlet> エラー内容 要素タイプ "servlet" のコンテンツは "(icon?,servlet-name,display-name?,description?,(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)" と一致しなければなりません。 お詳しい方、何卒ご教示の程願います。

  • cgi(perl)でパラメータが渡せない

    以下のプログラムでnum=9が伝わらないので、ミスをご指摘ください。 グラフィカルなアクセスカウンタを表示させようとしていますが うまくいかないのでテキストモードでデバッグしています。 [ /usr/local/apache2/htdocs/gif-view.html ] <html> <head> <meta http-equiv="Content-type:" content="text/html; charset=UTF-8"> <title>gif-view</title> </head> <body> <iframe src="/cgi-bin/gif-test.cgi?num=9"></iframe> <!-- <img src="/cgi-bin/gif-test.cgi?0" width=50 height=50> --> </body> </html> [ /usr/local/apache2/cgi-bin/gif-view.cgi ] permission は 755 にしています。 #!/usr/bin/perl print "Content-Type: text/plain;\n\n"; print "gif-test.cgi\n"; $prm0 = @ARGV[0]; if($prm0 = "") { print "Param is exist\n"; } else { print "Param is empty\n"; 実行結果として gif-test.cgi Param is empty となります。 httpd.conf で Script Alias /cgi-bin/ "/usr/local/apache2/cgi-bin/" を有効にしています。

    • ベストアンサー
    • Perl
  • Servlet_HelloWorld表示方法

    お世話になります。 java暦数ヶ月のものです。 現在、Java勉強の為サーブレットに取り組んでおります。 参考サイトや参考書を使っているのですがうまく表示ができません。 表示テスト用として、下記のhelloworld2直下にindex.htmlファイルを置いてURLより叩いたのですがこれでも表示されません。 (※前回やっていた場合は、表示ができておりその際に作ったファイルは、表示ができています) 【開発環境】 Eclipseにて、classファイル化して所定のフォルダに格納 【環境】 ・サーブレット C:\servlet-sample\helloworld2 │ index.BAK・・・・勝手に作られた │ index.html・・・・『http://localhost:8080/hello2/index.htmlで動作するかテスト │ ├─img │ p1.png │ └─WEB-INF │ web.xml │ └─classes HelloWorld2.class サーバー側(conf内) C:. │ catalina.policy │ catalina.properties │ context.xml │ logging.properties │ server.xml │ tomcat-users.xml │ web.xml │ └─Catalina └─localhost hello2.xml 【ファイル内容】 ・Java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } } ・コンテキストxmlファイル <Context path="/hello2" docBase="C:\servlet-sample\helloworld2"/> ・web.xml <?xml version="1.0" encoding="ISO-8859-1"?> http://www.apache.org/licenses/LICENSE-2.0 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <servlet> <servlet-name>helloworld2</servlet-name> <servlet-class>HelloWorld2</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>Sample1</servlet-name> <servlet-class>Sample1</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>helloworld2</servlet-name> <url-pattern>/helloworld2</url-pattern> </servlet-mapping> <!-- The mappings for the JSP servlet --> <servlet-mapping> <servlet-name>Sample1</servlet-name> <url-pattern>/Sample1</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jspx</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 【参考サイト】 http://www.javadrive.jp/servlet/ 【アクセスURL】 http://localhost:8080/hello2/helloworld2 http://localhost:8080/hello2/index.html (接続確認用)でアクセス 【エラーメッセージ】 HTTPステータス404  The requested resource (/hello2/index2.html) is not available. 参照先がないという意味だと思うのですがなぜこのようなメッセージが表示され、正常に稼動しないのかが不明です。 表示が出来ていたファイルに近づけてやっておりますが・・・ 他の方に上記ソースで実施して頂いたら実行できたようです^^; ご教示の程、よろしくお願い致します。

  • TomcatでのCGI

    Tomcatでcgiを動かすため、以下のことをしました。 servlets-cgi.renametojar を servlets-cgi.jar に名前変更 web.xmlを修正 (<servlet>と<servlet-mapping>のコメントアウト) cgiのファイル作成 #!/usr/bin/perl print "Test"; アクセスすると、真っ白な画面しか表示されず、ブラウザでソースの表示をすると、以下のソースしかありません。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD> <BODY></BODY></HTML> http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=12&topic=11945 ここの方は、Apacheと連携することで解決しています。 しかし、Tomcatのみで動かそうと思っているので、ご指導よろしくお願いいたします。

  • cgi.pmを使ったcgiに変更したのですが・・

    http://okwave.jp/qa/q7449935.html すみません、間違えて解決を押してしまいました・・・解決していないです。 前回返信いただいた内容を参考に、cgi.pmを使ってみることにしたのですが、 上手くいきません。 ボタンが表示されなくなってしまいました。 perlのcgiは作り方が色々あって選択が大変です・・・・・ #!/usr/bin/perl # wT付けるとエラー # 2012/05/01 cgi.pm使用開始 require 'cgi-lib.pl';# cgi-lib.plを呼び出す require "jcode.pl";# jcode.plライブラリを組み込む ########################################################################### use strict; use CGI; my $q = new CGI; print $q->header(-charset=>"Shift_JIS"); print $q->start_html(-title=>"てすと", -BGCOLOR=>'#ffffff'), $q->li, # 空白? $q->center($q->h1('CGI.PM')), # 文字を大きく書く $q->br, $q->br, $q->li('<FONT color="brack">テスト?</FONT><BR>'), $q->li('<form action = \"***.cgi\" method=\"post\">');# ***.cgiにpostで送信 $q->li('<BUTTON type="submit"> テストボタン </BUTTON>'), $q->li('</form>'), $q->br, $q->strong("強調文字"), $q->br, $q->end_html; $q->hr, # 線を引く print "以下のパラメータを受け取りました。<BR>"; my ( $name, $value ); foreach $name ($q->param ) { print "$name:\n"; foreach $value ( $q->param( $name ) ) { print " $value\n"; } } exit;

    • ベストアンサー
    • CGI
  • CGIでフォームからの入力内容を表示されない。

    初歩的な質問ですみません。 自宅サーバを使っています。 ■ActivePerl 5.8.8 Build 822 ■httpd142p ------------------------------ ■httpd142p ┗■cgi-bin  ┣■cgi-lib.pl  ┣■test.cgi  ┗■test.html ------------------------------- CGIは動作します。 一行目のパスもあっています。 --------------------------- 【test.cgi】 #!C:/perl/bin/perl #require './cgi-lib.pl'; #&ReadParse(*MYDATA) print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<TITLE>RESULT</TITLE>\n"; print "<BODY>\n"; print "氏名 = $MYDATA{'simei'}\n\n"; print "住所 = $MYDATA{'jyusyo'}\n"; print "</BODY>\n"; print "</HTML>\n"; exit; -------------------------------- 【test.html】 <HTML> <HEAD> <TITLE>TEST</TITLE> </HEAD> <BODY> <P> <FORM ACTION="test.cgi" METHOD="POST"> 氏名:<INPUT TYPE="text" NAME="simei"> 住所:<INPUT TYPE="text" NAME="jyusyo"> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="リセット"> </P> </FORM> </BODY> </HTML> ---------------------------------- ■実行結果 氏名 = 住所 = ---------------------------------- どなたかご教授ください。

    • ベストアンサー
    • CGI
  • TomcatとEclipseのweb.xml[]について

    TomcatとEclipseのweb.xmlの<context-param>の設定について お聞きいたします。 windowsXP上にTomcatとEclipseをインストールし ${CATALINA.HOME}\confの直下にあるweb.xmlと Eclipseで作成したWEB-INF直下のweb.xmlの 両者に <context-param> <param-name>hoge</param-name> <param-value>foo</param-value> </context-param> と記述があり jspから application.getInitParameter("hoge"); またはHttpServletの子クラスから getServletContext().getInitParameter("hoge"); と呼びに言った場合どちらの設定が優先され また、その優先順位の記述(設定)はどこで 行うのでしょうか? ちなみにlogging.propertiesなどの設定も どちらが優先されるのか気になります。 尚、環境は Tomcat5.5 Eclipse3.2 です。 どうかご教授お願い致します。

    • ベストアンサー
    • Java