SSIカウンタがうまく動きません

[上に] [前に] [次に]
柴田 勝 [E-Mail] [HomePage] 1998/04/13(月) 01:23:49
SSIカウンタを設置しようとしたのですが、htmlファイルに
<!--#exec cgi="/~net/cgi-bin/wwwcount/wwwcount.cgi?text"-->
と記述したのですが、[an error occurred while processing this directive] というメッセージが出てうまく動作しません。
<!--#exec cgi="/~net/cgi-bin/wwwcount/wwwcount.cgi?"-->
にすると、「OK. CGIスクリプトは動作可狽ナす。」と表示されます。
また、
http://web.pe.to/~net/cgi-bin/wwwcount/wwwcount.cgi?text
へブラウザから直接アクセスすれば問題なく動きます。
原因は何でしょう?

hiro-kim 1998/04/16(木) 17:01:53
なぜでしょう。私もちょっと興味をもちましたので,どなたか教えてください。

----------------------------------------------------------------------
Index of /~net/cgi-bin/wwwcount

Name                   Last modified     Size  Description
-----------------------------------------------------------
Parent Directory       12-Apr-98 23:46      -
lock/                  16-Apr-98 16:21      -
wwwcount.acc           16-Apr-98 16:21     2k
wwwcount.cgi           12-Apr-98 23:49     8k
wwwcount.cnt           16-Apr-98 16:21     1k
wwwcount.dat           16-Apr-98 15:52     1k
wwwcount.html          13-Apr-98 01:09     1k
----------------------------------------------------------------------

wwwcount.cgiを実行しないでその内容を見るため,IE4の右クリックで「対象をファイルに保存」してみたら,次のような 101Byteのテキストが入手できました。

----------------------------------------------------------------------
<HTML>
<HEAD><TITLE>Test</TITLE></HEAD>
<BODY>
OK. CGIスクリプトは動作可狽ナす。
<BR>
</BODY>
</HTML>
----------------------------------------------------------------------

でも,これは8kというサイズと合わないです。上記のHTML文がそのままwwwcount.cgiに格納されているとしたら,
 > http://web.pe.to/~net/cgi-bin/wwwcount/wwwcount.cgi?text
 > へブラウザから直接アクセスすれば問題なく動きます。
という現象とも合わないです。

結局,実行したあとの結果しか入手できないのでしょうか。

miyasiro 1998/04/17(金) 22:49:23
SSIのことは分からないのですが…

>結局,実行したあとの結果しか入手できないのでしょうか。
だと思います。httpで簡単にCGIのソースが手に入ると、
ちょっとコワいかもしれない…

hiro-kim 1998/04/18(土) 10:22:27
ディレクトリ:/~net/cgi-bin/wwwcount/ のRead,Write,eXec権限が
r-x であったなら,ファイル名の一覧は表示できるけれど,

ファイル:wwwcount.cgi のRead,Write,eXec権限が
--x であったなら,ファイルの内容はReadできず実行後の結果しか入手できない,ということでしょうか。

上記がその理由であったなら,やはりIE4には,右クリックの「対象をファイルに保存」で,「Readできません」というエラーを返して欲しいですね……

miyasiro 1998/04/18(土) 12:01:45
ディレクトリのパーミッションのrとxの相違や、--xのファイルがrがなくても実行できるのかなど
については、よく分かってません(^^;
むしろ、拡張子.cgiのファイルをhttpdサーバーがどう取り扱うかの問題だと思うのですが、
(つまり、HTTPプロトコルでは、ブラウザはGET URL で要求するしかないので、
URLの拡張子が.cgiの場合に実行するかファイルをそのまま渡すかの取り扱いは
設定によって一律に決まってしまうと思うのです。)
でも、ちょっとここは下手に想像でものを言うより、降参してunixに詳しい方に教えて頂いた方がいいと思います。
すいませんが、よろしくお願いします。

B-Cus 1998/04/18(土) 16:32:28
> SSIカウンタを設置しようとしたのですが

なのにどうして

> <!--#exec cgi="/~net/cgi-bin/wwwcount/wwwcount.cgi?text"-->

なんでしょう? 本当にSSIならexec cmdじゃないですかね。
exec cgiは使ったことないですけど、Content-type: hogehoge/fugafuga
がないからエラーになるんではないかと思うんですが。

> ディレクトリのパーミッションのrとxの相違や

ディレクトリのrだけがあるとファイルの一覧が表示できます。
でもcdやstat(2)はエラーになるはず。

% mkdir a
% touch a/b
% chmod 400 a
% cd a
Permission denied.
% ls a
b
% ls -l a
Permission denied.

ディレクトリのxだけがあるとディレクトリの内容は見られません。
ただ、ディレクトリの中のファイル名を知っていればなんでもできます。
cdやstat(2)もOKです。

% mkdir a
% echo foo > a/b
% chmod 100 a
% ls a
Permission denied.
% cd a
% ls -l b
-rw-rw-r--  1 hoge  fuga  4 Apr 18 16:22 b
% cat b
foo

FreeBSD2.2.5で試した結果です。

> --xのファイルがrがなくても実行できるのか

スクリプトは無理ですが、バイナリなら実行できます。
これはSolaris2.5でそうだった記憶があります。

miyasiro 1998/04/19(日) 03:01:15
>B-Cus さん
パーミッションの詳細な解説ありがとうございます。
実は、帰りに本屋に寄って一応調べて来たのですが、ディレクトリの場合の ls と ls -l
の相違や、ファイルの場合のスクリプトとバイナリの違いまでは書いてませんでした。
おかげでパーミッションの知識がだいぶ進歩しました(^^;

>hiro-kim さん
IEの右クリックの件ですが、ブラウザがサーバーに送るリクエストには、CGIを実行するか
ソースを返すかを選択するような指定ができないのです。このため、サーバーは、そのURLへの
リクエストが右クリックによるものか左クリックかを知るすべがなく、ちゃんとCGIの設定が
されていればいずれの場合も常に実行することになります。
IEの「対象をファイルに保存」という操作は、サーバーが返したレスポンスを左クリックなら
画面に表示するところを、その代わりにファイルとして保存するという意味に過ぎないのでは
ないでしょうか。

B-Cus 1998/04/19(日) 03:49:16
> おかげでパーミッションの知識がだいぶ進歩しました(^^;
あと、
http://www.jp.FreeBSD.ORG/~yuki/FreeBSD/readmail.cgi?source=users-jp&docnum=26579
以下の一連のツリーが参考になるかもしれません。

miyasiro 1998/04/19(日) 15:32:19
おお、ありがとうございます>B-Cus さん
覗いてきました。パスの一部に名前を利用する権限と内部をいじる権限とは違うって
ことですね。ls -l の相違も stat(2) が必要ということで了解しました。(iノードなど
も名前を知っているくらいなので、また、機会があれば unix のファイルシステムに
ついて勉強したいと思います)

[上に] [前に] [次に]