AN HTTPD ゲストブック/コメント集(1999年10月25日00:58)


ぴゅあ pure@GalaxyCorp.com 1999/10/30 03:01

>Seikoさん
> とりあえず、./2に変更し、ダブルクォーテーションを付けました。
> 保存を押すと、./はなくなりました。

 たぶん何かHTMLエディタを使われているのですね?
 ./がなくなっても問題ありません。
 フルパスがC:\...と書くのに対してhttp://...と書くのが相当すると考えれば良いでしょう。
 ./xxxとxxxは同じ相対の指定ということになります。

 seikoにindex.htmlがあってそこからjump内のpeltrial.htmlへ移動しそこでshop1.cgiを呼
び出すということですね?

C:\ 
 |-httpd
 | |-public_html
 | | |-cgi-bin
 | | |-jump
 となっているとしてjump/peltrial.htmlからcgi-bin/shop1.cgiを呼び出す場合perltrail.html
内では../cgi-bin/shop1.cgiと指定することになります。

 説明しておくと
 まずjump内に居るので「..」で親(一個上)に戻る。つまりpublic_htmlの中。cgi-binと
jumpが見えていることになります。
 そして「cgi-bin」でcgi-binに入ってshop1.cgiを見るということです。

 またindex.htmlからjump内のpeltrial.htmlを呼び出すというのはpublic_htmlに居るので
そのままjumpが見えている。即ちカレント(現在位置「.」)からjumpに入ってpeltrial.html
を見るということで./jump/peltrial.htmlと書くことになります。またこれは./を省略しても
構わないのでjump/peltrial.htmlと書いても構いません。

 ./を省略しない例としてCGIのソースコードの中でrequire './jcode.pl';と書く場合とかが
あります。厳密にはrequire 'jcode.pl';でも良かったりする筈ですが./を付けた方がサーバ
に良いと考えます(jcode.plの検索時間が短縮される)。なおこれはrequireを書いたソース
コードファイルと同じディレクトリ(フォルダ)内にjcode.plを置いた場合です。サーバで
用意してくれている場合はそれを使った方が良いと思うのでrequire 'jcode.pl';(./を書か
ないことでシステムで指定された場所から探す)と書くことになります。
 さっきの./を省略できるということとは意味合いが違うので一応書いておきました。

 確かデータファイルのオープンでもファイル名に./を付けないと正しく動作しないサーバが
あったような?(UNIX/Apache)

 「ダウンロードしますか?」はたまに聞きますがどういう場合だったか。。。。
 さのまま見えるというのはAN HTTP Serverを通していない、つまりhttp://127.0.0.1/~seiko/
でindex.htmlを呼び出していないで直接ブラウザで見ている(file://C:\httpd\public_html\index.html
のようにURLのところに見えている/若干表現の仕方が違いますが)のではないかと思いますが。

 あれ?「index.htmlと同フォルダにshop1.cgiとなります。」とは?


Seiko do-shout@mx4.tiki.ne.jp 1999/10/30 02:03

すみません投稿後、画面がうまく表示されないのに気がつきました。
seiko(Folder)内index.html / jump(Folder)
jump(Folder)内 peltrial.html(現在送信ボタンあり)
また、index.htmlと同フォルダにshop1.cgi
となります。


Seiko do-shout@mx4.tiki.ne.jp 1999/10/30 01:59

びゅあさんへ
とりあえず、./2に変更し、ダブルクォーテーションを付けました。
保存を押すと、./はなくなりました。
びゅあさんのご指摘で、質問があります.
seiko(Folder)---index.html
---jump(folder)---peltrial.html(file)
---cgi-bin(Folder)-shop1.cgi(目的のファイル)
と言う関係にしたいのですが、peltrial.htmlとshop1.cgiの位置関係は成り立たないのですか?
私が構築したいのは、セカンドページ(peltrial.html)からcgiにアクセスしたいのですが・・・
次に、peltrial.htmlをindex.htmlの位置に移動したら,アクセスしたのですが、shop.cgiをダウンロードしますか?の画面でした。
その場で実行するとshop1.cgiがperl文字(というのでしょうか)のまま表示されました。
また、アドバイスをお待ちしています。


中田昭雄 nakata@st.rim.or.jp 1999/10/29 21:19

ぴゅあさん、
ここでは、タグは <A HREF=""> と <PRE> と終了タグ 以外は使えないと思ってください。
ちゃんと書いてはありませんが。

あと、HTTPのレスポンスコードについては HTTP/1.1 (RFC2616)をご覧ください。


ぴゅあ pure@GalaxyCorp.com 1999/10/29 19:49

>Seikoさん
 あ。。。。(>_<)
 タグが機能しませんでした。ここのCGIはダブルクォーテーションを判断しているのか使えない
タグなのか。。。。
 ちょっと書き直してみます。

 <form METHOD=POST ACTION="http://127.0.0.1/~seiko/cgi-bin/shop1.cgi<B><FONT color=red>"</FONT></B>>
 これがちゃんと表示されれば。。。。(最後の辺りの赤いダブルクォーテーション)

 shop1.cgiの次にダブルクォーテーションが必要ですがこれがないのだと思います。
 即ち .../shop1.cgi">のように書かれていなければならない。


ぴゅあ pure@GalaxyCorp.com 1999/10/29 19:44

>Seikoさん
 その示されているものがコピー&ペーストしたものなら
 <form METHOD=POST ACTION="http://127.0.0.1/~seiko/cgi-bin/shop1.cgi<b><font color=red>"</font></b>>
 ということになりますがどうでしょう(赤(見えるのかな?)のダブルクォーテーションが抜け
ている)。
 ここに書くときに間違えたのでは?という気もしますがエラーメッセージが「/shop1.cgi>」
で終わっているのならその可能性があるでしょう(「>」は付いてこない筈)。
 「POSTメソッドが使えません」というのが一見METHOD=POSTに関係していそうに見えたりする
メッセージですがACTIONのURL指定が文字列として(ダブルクォーテーションで囲む)終結してい
ないので「>」が何かの意味があると見なされているのではないかと思います(ちゃんと試
していないので絶対の確信はありませんが)。

 余談ですけど。
 http://127.0.0.1/~seiko/index.htmlから呼んでいる(これが言っているHTML文書)なら
 http://127.0.0.1/~seiko/cgi-bin/shop1.cgiの部分は ./cgi-bin/shop1.cgiと書くよう
にした方が良いでしょう。
 ./などで始まるとき相対的な指定をすることになります(これだとindex.htmlのあるフォルダ
を基準「.」としてその下にあるcgi-binフォルダの中のshop1.cgiを指すことになる)。
 例えばこれをそのままプロバイダに持っていった場合とかLANを組んでAN HTTP Serverのあ
るIPアドレスが127.0.0.1で指定するのではなくなったときhttp://127.0.0.1/~seiko/の部分
が変わることになりますが相対的に指定しておくことで殆ど変更を加えることなく作業できる筈
です。また例えば今後巨大になってきてフォルダごと他へ移したいときも最小限の変更で済ます
ことができるでしょう。
 AN HTTP Serverを使うかプロバイダなどその他のサーバを使うかに関係なくこのような指
定の仕方をするように気をつける(常に考えておく)と良いと思いますよ。

 他の方からもレスがあるかと思いますがσ(>_<)の言っていることが違ってればまた加筆して
もらえれば。。。。


Seiko do-shout@mx4.tiki.ne.jp 1999/10/29 18:15

ひそかにフリーソフトを入手し、試行錯誤で、httpdでの頭のページを表示できました。
次にcgi-bin内のファイルに移動するためhtmlファイル内の送信ボタンを押すと
エラーが以下のように表示
このファイルにはPOSTメソッドが使えません。ファイル名:/~seiko/cgi-bin/shop1.cgi>
htmlソースは
<form METHOD=POST ACTION="http://127.0.0.1/~seiko/cgi-bin/shop1.cgi>
<input TYPE=SUBMIT NAME="ENTER">
の表示で、無意味を表す色で表示してあります。
htmlソースの2行目は送信ボタン作成でしょうか?変な場所にボタンができています。
どこに注意すればよいでしょうか?
よろしくお願いします。


Seiko do-shout@mx4.tiki.ne.jp 1999/10/26 01:51

びゅあさん
今、seikoフォルダをhttpdのフォルダに移動して見たら、でました!!!
ありがとうございました。
すごく助かりました。


Seiko do-shout@mx4.tiki.ne.jp 1999/10/26 01:48

びゅあさんへ
ていねいなアドバイスありがとうございます。
質問なんですが、下のルートは、Cにhttpdをおいていますが、アップロードを仮定する場所として作るフォルダseikoは、Cの下においてよいのですか?それともhttpdの中に置くんですか?すみません、初歩的な質問で・・・
よろしくお願いします。

C:\ −−−−−−−−−−− Cドライブ
 |-httpd −−−−−−−− AN HTTP Serverのインストール先/ドキュメントルートC:\httpd
 | |-public_html −−− /~seiko
 | | |-cgi-bin


中田昭雄 nakata@st.rim.or.jp 1999/10/25 21:10

Seiko さん、
バーチャルホストはまずは使わない方がいいでしょう。
あとはぴゅあさんの説明でなんとかなったのではないかと思います。


ぴゅあ pure@GalaxyCorp.com 1999/10/25 09:49

>Seikoさん
 まずエラー404に付いてファイル名(フルパス)は表示されているでしょうか。
 それが判断材料になると思います。

 まずPerl for Win32に関するところは間違ってファイル名を変えていなければ問題ありませ
ん。というよりそこでもし間違っていたら他のエラーになる筈です。

 まずエイリアスプロパティシートの仮想パスが1つになったということは仮想パス/~seikoが
なくなったということでしょうか。これはチェックが外れるだけで消えてしまうことはないのだ
ろうと思いますが。
 その部分をリストアップしてもらえますか。

 順番に見てみてください。ディレクトリ構造は以下のようになっているのだと想定しています。
 もしかして設定を壊しているかもしれないので細かく書いておきます。取り敢えず話に出てい
る範囲で影響が出そうなもののみ。

C:\ −−−−−−−−−−− Cドライブ
 |-httpd −−−−−−−− AN HTTP Serverのインストール先/ドキュメントルートC:\httpd
 | |-public_html −−− /~seiko
 | | |-cgi-bin


・一般プロパティシート
 [v] HTTPサーバ機能(これにチェックが入っていないとHTTPサーバとして動かない筈)
 [ ] バーチャルホスト(使ったことはないが)
 ドキュメントルート:C:\httpd
 [v] /~seiko -> ドキュメントルート\ public_html(http://127.0.0.1/~seiko/に必要)
 [v] CGIを実行可能な拡張子
 [ ] #!の行を調べる
 .pl,.cgiの実行プログラム:Perl(小文字に直したにあるように大文字小文字関係なし)
 [ ] .pl,.cgiをPerlIS.dllで実行

 ※ここで一度OKボタンを押して設定を更新すること。

・エイリアスプロパティシート
 一番上の仮想パス−ローカルパスが以下のようになっていることを確認する。
 v /    C:\httpd
 v /~seiko C:\httpd\public_html

 設定はこれだけで良い筈です。
 C:\httpd\public_htmlフォルダ内のindex.htmlを見るときhttp://127.0.0.1/~seiko/とし
てみてください。

 もしその後index.htmlから呼び出すCGIでエラー404が出ているのだとすると
C:\httpd\public_html\cgi-binフォルダ内の例えばtest.cgiを呼び出しているとするとindex.html
内のCGIの呼び出しが「./cgi-bin/test.cgi」(先頭の「.」を忘れないこと)となっているか
確認してみてください。


Seiko do-shout@mx4.tiki.ne.jp 1999/10/25 08:48

httpdの設定をつつきながら書いていたら、強制終了が現れ,メッセージが消えちゃいやだと慌てて投稿ボタンを押しました。
今、一般/HTTP機能にチェック、バーチャルホストのチェックをはずしたら、一般、エイリアスとか書いてあるインデックスが一行になりました。それまでは、2行で表示してありました。
よろしくお願いします。


Seiko do-shout@mx4.tiki.ne.jp 1999/10/25 07:39

ぴゅあさんへ
身も知らない私の質問に答えてもらってありがとうございます。
やっぱりでません。
私、何か変わったことをしているのでしょうか??
どのようなエラーかというとエラー404 みつかりません - ドキュメントがないか、読み込みができません となります。
最初、phhpd120という名前だった中田さんのファイルをC:downloadというフォルダの中においていましたが、長いので、C:httpdとフォルダを移動しました。それで、オプション/一般の中のdownloadとついたところは、全てhttpdに変更しました。
それからPerlWin32のダウンロードした方は,将来小文字の方が良いかなと勝手に思い、Cにperlフォルダをおいて、binとdocsのフォルダ内のファイルで大文字のPerlがついているものは、なぜか、小文字に変えました。


ぴゅあ pure@GalaxyCorp.com 1999/10/25 02:00

>Seikoさん
 どういうエラーが出ているのかとどういう設定をしているのかにもよりますが。。。。

 取り敢えず/~seikoがpublic_html内を指すようになっている(特に変わったことをしていない
として)ならindex.htmlを指すには
 http://127.0.0.1/~seiko/
 (最後のindex.htmlは書いても書かなくても)

 「<>で括った」というのが解りませんがpublic_htmlと同じ階層にcgi-binフォルダを
作ったのならその中のCGIを呼び出すには
 http://127.0.0.1/cgi-bin/xxx.cgi

 なおHTML文書内で呼び出すときエイリアスに/cgi-binが正しく設定されているなら(そのま
までたぶんそう)
 /cgi-bin/xxx.cgi

 で良いと思います。


Seiko do-shout@mx4.tiki.ne.jp 1999/10/25 00:58

数日前から中田さんのhttpdをダウンロードし、何とかいろいろ触って見ているのですが、エラーがでます。
フォルダhttpdに存在し、perlフォルダに言語があります。
仮想サイトはseikoで、そこにpublic_htmlと並行してもう一つcgi-binを作成しました。
ほりほりさんの内容を参考に#を探すのチェックをはずしました。
pl,cgiの実行プログラムを<>でくくりました。
アドレスはhttp://127.0.0.1/~seiko/public_html/index.html です。
何か問題がありますか?
私は本当に初心者で、何にもわかりません。
よろしくおねがいいたします。