どるこむ仲間の掲示板!(alpha) PAST LOG 253


[253] 自分のマシンでCGIが実行できない
2000/10/09(Mon) 01:20:58
FLAKPANZER さん (a036102.ppp.asahi-net.or.jp)
Web: http://www.asahi-net.or.jp/~wi2t-iigy
いつもお世話になっています。
 最近、仕事で現在マークシートで取っている個人データをLANで集めようと思い、CGIを勉強しようかと考えIO別冊「かんたんCGIプログラミング」を購入して来ました。
 最初の簡単なCGI(文字を表示するだけ)を実施したところ、「HTTP500内部サーバーエラー」と出てしまいました。
 何分初めてのことなので、どう対処して良いか、どう質問して良いかもわかりません。
 なにか御教授戴けないでしょうか?
 あと、同別冊ではAutoexec.batに「SETPATH=C:\Perl\bin」を加えるように記述があるのですが、これを記入しても何も変わらず、「PATH=C:\Perl\bin」を記入すると、Win98が起動しなくなってしまうので困っています。
 こちらについても御教授戴けませんか?

 マシンは例によってPC-9821Xt/C10Wで、以下の状態です。

OS/WIN98SE
PWSを入れました。
PerlはActivePerlを入れました。


1. YFUJI 2000/10/09(Mon) 01:30:31
えーと、まず、DOSでperl hogehoge.cgiでちゃんと表示されるか確認してください。(^^;
表示されるのなら、"Content-type:text/html\n\n"を初めに表示してないとか。
ブラウザで表示する時は↑必須です。
PWSは使ったことないので解りませんが…。

自分はApache+ActivePerlでやってます。
参考: http://www.kent-web.com/www/apache/index.html

2. 山本 2000/10/09(Mon) 01:52:23
同じ本を持っているので確認してみました。
「SETPATH=C:\Perl\bin」と書いてありますが、これは本を見ても
そのように見えますね。setとpathの間にスペースが入るはずですが。
初心者向けなら増田若奈さんの本もオススメ。

AUTOEXEC.BATの件ですが
説明してる本が互換機を対象としているから 98でC〜を指定するとFDDを読みに行ってしまうって落ちではないでしょうか(^^;
きちんとperl.exeのあるpassを指定してあげれば動くと思います。
また autoexec.bat で指定しなくてもcgiファイルの先頭で
#!〜\perl.exe
とperlの場所を指定してあげれば(httpdの設定にもよりますが)動くはずです。

4. もりのみやこ 2000/10/09(Mon) 02:07:03
パスのところは
set PATH=%PATH%;c:¥Perl¥bin;
(setは無くても良い)
とすればOKです。%PATH%がミソです。
だけど、Windowsフォルダへのパスは自動的に通るはずなのでこれが原因で起動不可になるのはちょっと考えられないのですけどね。。。ま、上記なら確実にWindowsフォルダへのパスは生きたままになるはずなので試してはどうでしょうか?

Perlって触ったこと無いんで、他のところは全くわかりません(^^;;;

5. 山本 2000/10/09(Mon) 02:08:53
そうか、だとしたらautoexecには「a:\windows;a:\windows\command;a:\Perl\bin;〜」と
記述するのが正解ですね。
それだけが原因かどうかは分かりませんが。
サーバに関しては私もアパッチをおすすめします。(情報が豊富なので)

6. 山本 2000/10/09(Mon) 02:10:32
あ、かぶってしまいました。もりのみやこさんの記述のほうがスマートですね。

7. もりのみやこ 2000/10/09(Mon) 02:18:11
あ、9821だと
set PATH=%PATH%;a:\perl\bin;
ですね(^^;;;
「a:」の部分はperlをインストールしたドライブになるのでしょうかね。

8. もりのみやこ 2000/10/09(Mon) 02:19:54
あや、山本さんとすれ違い。。。(*^^*)(なぜ照れる)

9. 雷獣王GRIFFON 2000/10/09(Mon) 02:24:28
IIS では拡張子との関連づけが必要だったのですが,PWS だとどうなんでしょうね?

10. FLAKPANZER 2000/10/09(Mon) 02:35:08
皆さん、ありがとうございます。
>YFUJIさん
>DOSでperl hogehoge.cgiでちゃんと表示されるか確認してください。
すいません。DOSは全くだめなもので何をすれば良いか判りません。具体的な操作を御教授下さい。
>"Content-type:text/html\n\n"は、ちゃんと書いてあります。

>山本さん、もりのみやさん
 もりのみやさんのおっしゃる記述でautoexec.batdに記述したところ、WIN98も立上りました。
>雷獣王GRIFFONさん
「.PI」を「C:\PERL\BIN\PERL.EXE "%1" %*」に関連させています。
 でも、現段階においてもなおエラーが出ています。
 引続きよろしくお願いします。

11. 山本 2000/10/09(Mon) 02:49:55
いや、なぜ照れる(汗)

> 「.PI」を「C:\PERL\BIN\PERL.EXE "%1" %*」に
とりあえずそこも違うかな?「A:\PERL〜」でしょう。
あと、DOS窓で「perl」と入力してリターンを押すと何か反応ありますか。
autoexecの記述が正しければ、perlがメッセージを返してくるハズ。

12. YFUJI 2000/10/09(Mon) 02:51:58
うーん、でもActivePerlってインストールした時点でたしかpath書き換えやってくれた筈ですけどねぇ…
上に書いたアドレス参考に、Apache+ActivePerlで試した方が早いかもしれないですが…。

MS-DOS プロンプトを開いて、そこで、
> cd [cgi置いてるフォルダ]
> perl [cgiファイル名]
と打ってみてください。それで「コマンドまたはファイル名が違います」みたく表示されればpath設定がミスってます。
あと、試しにcgiファイルの先頭を
> #!c:/perl/bin/perl
に変えてみてください。

13. YFUJI 2000/10/09(Mon) 02:54:37
というかperlは何処にインストールしましたか?
あと、cgiの内容も書いてもらえれば…。
# なんか書き込み見てると曖昧…(^^;
ちなみに、DOS窓でperlと打っただけではカーソルが点滅するだけです。stdinだったかと。

14. 山本 2000/10/09(Mon) 03:01:47
あうち、そうでした。たしかこんなとき、perlのバージョン情報などを表示するための
コマンドラインオプションがあったと思います。(忘)

16. YFUJI 2000/10/09(Mon) 03:23:00
> perl --version
若しくは、
> perl -V
ですね。後者の方が詳しく表示されますけど。

17. FLAKPANZER 2000/10/09(Mon) 03:24:52
みなさん、深夜にも拘らずありがとうございます。
 まず、うちのドライブ構成ですが、A:\は元からの1GBでWIN98専用に使用しています。
 B:\は新しいHDDの内先頭部分をスワップファイル用によけた物、残りをC:\としてアプリケーションやデータ、W2Kに使用しています。
 そしてPWSもActivePerlもC:\に入れました。
YFUJIさんのおっしゃるように以下のとおりDOS窓で入れてみました。
A:\WINDOWS>perl C:\Inetpub\cgi-bin\print.cgi
 すると以下のように返ってきました。
Content-type:text/html

<HTML>
<HEAD>
<TITLE>CGI-TEST</TITLE><HEAD>
<BODY>
this is test----
</BODY>
</HTML>
(表示にの都合上「<」、「>」は全角文字に変えています。以下同じ。)
 現在のCGIの内容は、以下のとおりです。
#! C:\perl\bin/perl
print "Content-type:text/html\n\n";
print "<HTML>\n<HEAD>\n";
print "<TITLE>CGI-TEST</TITLE><HEAD>\n";
print "<BODY>\n";
print "this is test----\n";
print "</BODY>\n";
print "</HTML>\n";
exit;

18. FLAKPANZER 2000/10/09(Mon) 03:30:23
>山本さん、YFUJIさん、こんなん出ましたけど。
DOS窓において
A:\WINDOWS>perl/v
Can't open perl script "/v": No such file or directory

A:\WINDOWS>c:\perl\perl/v
コマンドまたはファイル名が違います.

19. 山本 2000/10/09(Mon) 03:43:00
> A:\WINDOWS>c:\perl\perl/v
「c:\perl\bin\perl /v」なら大丈夫だと思います。
どうやらPWSがらみのようですね。「かんたんCGIプログラミング」なら
AN HTTPDのインストールも解説しているので、こちらを試してみてはどうでしょう。

20. YFUJI 2000/10/09(Mon) 03:54:14
/vじゃないですー、-Vですー。"/"は使えないですよ。
あと、1文字オプションは大文字小文字区別しますので注意です。

それからさっきも書きましたが、
http://www.kent-web.com/www/apache/index.html
じゃダメですか?>FLAKPANZERさん

21. FLAKPANZER 2000/10/09(Mon) 04:34:40
-vだったらコマンドが違うとしかられて・・。(;_;)

 ところで、APACHEってPWSを入れたままでも使えますか?
 現在ダウンロード中です。

22. YFUJI 2000/10/09(Mon) 04:38:17
使えますよ。単体のソフトとして動作しますので。
コンソールアプリですけど設定は上記のアドレスに書いてあるとおりやれば大丈夫なはずです。
世界中のwebサーバのhttpdの大半はApacheですからね、安定してますよ、やっぱり。

23. Tambo 2000/10/09(Mon) 09:22:03
(旧)WinProxy(1.56 -RAS)のWEBサーバー機能とPerl for Win32でやってました。
Perl for Win32はPATHを自動的に書き換えてくれるので楽でした。
とりあえずフリーのCGIで動作確認するのもいいかと思います。

cドライブにインストールしてるんですね(^^;
じゃぁ
>98でC〜を指定するとFDDを読みに
って話は関係ないですね(^^;

でもって…
#! C:\perl\bin/perl
この一行ってこれで合ってるんですかね(^^;
なんとなく
#! C:\perl\bin\perl.exe
のような気が(^^;
それと
>-vだったらコマンドが違うとしかられて・・。(;_;)
-vでやったら かな(^^;<言いたい事は
えっと またスペースが入ってないとかそういうことは無いですか?
基本的にDOSのコマンドは
コマンド スペース スイッチ(引数?)
となります。
#でも どこまでがコマンドか判ってなかったらどうしよう(^^;
##判らなかったら その旨を書けばまた教えますから(^^;

25. YFUJI 2000/10/09(Mon) 16:12:13
通常のコマンドは
> [コマンド名] [スイッチ] [ファイル名] ...
ですね。 e.g. "DIR /W A:\WINDOWS"

ちなみに、#!c:/perl/bin/perlで構わないはずです。
\で認識してるかどうかは知りませんが…

26. 山本 2000/10/09(Mon) 16:17:03
>-v
Active Perlではバージョン表示はサポート(おおげさ)されていないと
いうことなんでしょう、たぶん。
とりあえずPerlは正常にインストールされているのだと思います。
問題はサーバですね。

27. YFUJI 2000/10/09(Mon) 16:28:24
サポートされてますよぅ。>-v

あっ ファイル名忘れてた(^^;
-vスイッチは手元のActivePerl-5.6.0.616 では表示されています。
>ちなみに、#!c:/perl/bin/perlで構わないはずです。
UNIXの場合はそれで通るのは知ってましたけど、Windowsだと名前が違うから変える必要があると思ってました。
perlで終わってても平気なんですね。
勉強になりました。

29. 山本 2000/10/09(Mon) 16:38:43
あう、そうなんですか。トンチンカンな回答ばかりで失礼。(--;
単純に「perl /v」だと返事が返ってくるようなので、パスは通っていると
見ていいのですよね。

30. Tambo 2000/10/09(Mon) 22:07:30
HTMLファイルは表示されてるのかなぁ。
file://〜〜〜じゃなくって、http://〜〜〜でですよ。

31. FLAKPANZER 2000/10/10(Tue) 00:37:12
だんだん状況が悪くなっています。
YFUJIさんのおっしゃる物を入れてみたのですが、「検索中のページは現在利用できません。」と出てきます。
 PWSのページも同じエラーで出なくなりました。
 もうどうしたら良いのか。
 いつまで経ってもスタートにも立てない・・。
 勿論全て、http://から始まっています。

32. 山本 2000/10/10(Tue) 01:30:20
私はAN HTTPDで試しましたが、イッパツで成功しました。
こんなに簡単なの、と思ったくらい。もう去年の話ですが。
Tamboさんが紹介してくれているWinproxyも簡単です。
PWSもそう難しくなかったような気がします。
アパッチのほうは先に紹介した増田さんの著書によれば、導入時に
エディタで開いて設定を書き換える必要がある部分がいくつか
あったと思います。(詳細は忘れましたが)
http://127.0.0.1」でどう出ますか? ルートにindex.htmlを
置いていればそれが表示されるハズですが。
ルートフォルダはサーバの設定画面で場所を指定します。

AN HTTPD は私も使わせていただいてます。
進めようかどうか ちょっと悩んだんですけどね…
設定は簡単なんですが、負荷に弱い部分が有りそうなので CGIのテスト程度にとどめて置いたほうが良さそうです
AN HTTPDの特徴としては、
"CGI出力を検査"にチェックを入れておけば エラーがあった場合でどの行がおかしいかが 判りやすい。
Content-type が適当でも動いた(ぉぃ
後者はちょっと 厄介かも(^^;
AN HTTPD で動かしていたCGI(perl)をApacheに持っていったら動かなかったんで…

でっと
>検索中のページは現在利用できません
と言うのは DNS,IPアドレス等の設定が違か、httpdが動いていないのかな。
多分 httpdが動いてないって可能性のほうが 大きいと思いますが…

>エディタで開いて設定を書き換える必要がある部分
これは
x:\Program Files\Apache Group\Apache\conf\httpd.conf
でしょうか…
少なくてもUNIX版ではApacheは動こうとしているサーバの名前の解決が出来ないと
動いてくれないソフトだったはずです。
ServerName はきちんと設定してあげてくださいね。

ちょっと 入れてみました<Apache for Win32
httpd.confの書き換え個所は最低二つ
#Listen 12.34.56.78:80

Listen 127.0.0.1:80

#ServerName new.host.name

ServerName localhost
に書き換えてみてください。
これで http://127.0.0.1 にアクセスすると 406 Not Acceptable が帰ってくるはずです。
これで とりあえず起動は出来るかな(^^;

FS-BBS alpha v0.03e [2000/10/12]
PAST LOG #253