• ベストアンサー
  • すぐに回答を!

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

  • 質問No.302080
  • 閲覧数86
  • ありがとう数3
  • 回答数4

お礼率 96% (961/995)

以下のホームページと同じように、設定したのですが。。。

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
  • ベストアンサー

ベストアンサー率 52% (13/25)

AddHandler cgi-script .cgi

で、hoge.cgiしかCGIとして実行してくれないみたいだよ

SSIとして実行(Include)できるには、あと2、3ステップ必要です。

<!--#include virtual=

でやればあとはできるのでは?
#execの方はパラメータの渡しとか、相対パスがコマンドライン仕様なので
virtualが使えるならそっち使った方がええと思う。
お礼コメント
kamkamkam3

お礼率 96% (961/995)

どうもご返事ありがとうございます。あー、そうなんですか?SSIの実行には、他に何か設定がいるとは、どこができいたような気がするんですが。。どこで、聞いたのか忘れてしまいました。

あと、他のページからコピペしてきた、test.cgiってのは、一応実行できます。ただ単に、Welcome to my computer, Apache Server! と表示するだけのものなんですが。

他のホームページのを色々試したんですが、ごく単純なものはどれもできます。(例えば、現在時刻を表示するものとか)しかし、ちょっと手の込んだものとなると表示できない、画面が真っ白だったり、InternalServerErrorとなったりします。

「あなたは、番目のお客様です。」と表示され、肝心の数字の部分が表示されません。

少し、頭を冷やして、他のところでも勉強してこようと思うので。。。どうも、ご返事ありがとうございました。また、どこかで。。。
投稿日時:2002/06/29 11:32

その他の回答 (全3件)

  • 回答No.3

ベストアンサー率 24% (357/1463)

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

お礼率 96% (961/995)

あと、以下のコードを試したところコードがそのまま表示されてしまいました。やはりディレクトリとかの、設定がおかしいんでしょうか?

#!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>
投稿日時:2002/06/28 20:33
お礼コメント
kamkamkam3

お礼率 96% (961/995)

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

初期設定が原因で、この様になってしまうという事はないのでしょうか?
投稿日時:2002/06/28 20:20
  • 回答No.2

ベストアンサー率 29% (36/122)

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

お礼率 96% (961/995)

ありがとうございます。 perl -wc counter.cgiとやったところ、
counter.cgi syntax OKって、でました。ていうか、ホームページの見本をコピペしてきたので。。。

多分、単なる設定ミスだと思うんですが、どこがおかしいのか分からないんです。どうもありがとう御座いました。
投稿日時:2002/06/28 19:51
  • 回答No.1
確認です。
サイトの説明にある、

>実際には、一番上の行を詰めてください。



>UserDir 命令の箇所で、 IncludesNoExec を Includes に変更しなかったなら、最後のhttp://127.0.0.1/~apollo/counter.html はエラーになります。

は大丈夫ですか?
補足コメント
kamkamkam3

お礼率 96% (961/995)

>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はできるのに、なぜ、他のやつはできないのでしょうか?
投稿日時:2002/06/28 16:52
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ