• ベストアンサー

Apacheでcgiができないんです。

以下のホームページと同じように、設定したのですが。。。 http://www.futomi.com/lecture/apache/config.html 下のcgiは実行できます。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>Apache</TITLE>\n"; print "</HEAD>\n"; print "<BODY>\n"; print "<H2>Welcome to my computer, Apache Server!</H2>\n"; print "</BODY>\n"; print "</HTML>\n"; しかし、下のcgiは実行できません。htmlファイル、cgiファイル共に、あるホームページからコピペしたので、間違いないと思います。ここではhtmlファイルは書きませんが、以下のURLです。 http://www2j.biglobe.ne.jp/~apollo/server/apacuse.html #!/usr/local/bin/perl $countfile= "count.dat"; open(IN, "< $countfile"); $count = <IN>; close(IN); $count++; open(OUT,"> $countfile"); print OUT $count; close(OUT); print "Content-type: text/plain\n\n"; print $count;

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

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

AddHandler cgi-script .cgi で、hoge.cgiしかCGIとして実行してくれないみたいだよ SSIとして実行(Include)できるには、あと2、3ステップ必要です。 <!--#include virtual= でやればあとはできるのでは? #execの方はパラメータの渡しとか、相対パスがコマンドライン仕様なので virtualが使えるならそっち使った方がええと思う。

kamkamkam3
質問者

お礼

どうもご返事ありがとうございます。あー、そうなんですか?SSIの実行には、他に何か設定がいるとは、どこができいたような気がするんですが。。どこで、聞いたのか忘れてしまいました。 あと、他のページからコピペしてきた、test.cgiってのは、一応実行できます。ただ単に、Welcome to my computer, Apache Server! と表示するだけのものなんですが。 他のホームページのを色々試したんですが、ごく単純なものはどれもできます。(例えば、現在時刻を表示するものとか)しかし、ちょっと手の込んだものとなると表示できない、画面が真っ白だったり、InternalServerErrorとなったりします。 「あなたは、番目のお客様です。」と表示され、肝心の数字の部分が表示されません。 少し、頭を冷やして、他のところでも勉強してこようと思うので。。。どうも、ご返事ありがとうございました。また、どこかで。。。

その他の回答 (3)

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.3

実行できる方は単にHTMLを吐き出すだけ。 実行できない方はファイルの入出力を含む。 となると、そこら辺に何かあるのではという 気がしてきますが、アクセス権とかは大丈夫 ですか?

kamkamkam3
質問者

お礼

アクセス権。。。私には、分かりません。ちなみに、自分としては、httpdconfの設定が間違っていたり、初期設定が間違っているのかな?と思っています。 初期設定が原因で、この様になってしまうという事はないのでしょうか?

kamkamkam3
質問者

補足

あと、以下のコードを試したところコードがそのまま表示されてしまいました。やはりディレクトリとかの、設定がおかしいんでしょうか? #!C:/perl/bin/perl open (COUNTFILE, "<count.dat"); $count = <COUNTFILE>; close (COUNTFILE); $count++; open (COUNTFILE, ">count.dat"); print COUNTFILE "$count"; close (COUNTFILE); print $count; exit; 実行したのは http://localhost/~hoge/counterssi.ssi としたのですが、チルダが自分的には、気になるのですが、 保存した場所は、C:\Apache\users\hogeです。 httpd.confで設定したのは、以下です。何か足りない記述でも、あるのでしょうか?これだけでは、cgiファイルを hogeフォルダから読み取ってくれないのですか? <IfModule mod_userdir.c> UserDir "C:/Apache/users/" </IfModule> <Directory "C:/Apache/users"> Options +ExecCGI AddHandler cgi-script .cgi </Directory> <Directory "C:/Apache/users"> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI Includes <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory>

  • taka2456
  • ベストアンサー率29% (36/122)
回答No.2

具体的にどのようなエラーが出てるのか教えてもらえれば助かるのですが perl -wc CGIのファイル名 で一度エラーチェックをかけてはどうでしょうか

kamkamkam3
質問者

お礼

ありがとうございます。 perl -wc counter.cgiとやったところ、 counter.cgi syntax OKって、でました。ていうか、ホームページの見本をコピペしてきたので。。。 多分、単なる設定ミスだと思うんですが、どこがおかしいのか分からないんです。どうもありがとう御座いました。

noname#227796
noname#227796
回答No.1

確認です。 サイトの説明にある、 >実際には、一番上の行を詰めてください。 と >UserDir 命令の箇所で、 IncludesNoExec を Includes に変更しなかったなら、最後のhttp://127.0.0.1/~apollo/counter.html はエラーになります。 は大丈夫ですか?

kamkamkam3
質問者

補足

>UserDir 命令の箇所で、 IncludesNoExec を Includes に変更しなかったなら、最後のhttp://127.0.0.1/~apollo/counter.html はエラーになります。 私は、apache1.3.24を使っています。よって、該当する箇所はありませんでした。その代わり? <IfModule mod_userdir.c> UserDir "C:/Apache/users/" </IfModule> の文があるんです。フォルダはこの通りにつくられ、この下の、hogeにcgi, htmlファイルは置いています。 どっちもいいとおもうんですが。。。とにかくhttpd.confの編集は http://www.futomi.com/lecture/apache/config.htmlのとおり、忠実にやったのですが。。 あと、test.cgiはできるのに、なぜ、他のやつはできないのでしょうか?

関連するQ&A