WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:ディレクトリ参照

0:[投稿] toto [2002/11/08 11:02 ][環境:WIN+IE WIN系+Perl]

CGI(Perl)内でディレクトリを参照したいのです

/cgi-bin/test.cgi
とあったとし、参照したいディレクトリが、
/sample
だとしたら、どのようにすればいいのでしょうか?
1階層戻るってどうすればいいのかわかりません。

HTMLタグなら../sampleでできるんんですがね・・・


1:[回答] 薫 [2002/11/08 14:22 ]

最初に
$see = '/sample';
のような決め打ちをしないという事なのであれば、

$ENV{SCRIPT_NAME}でホスト以降のアドレスが取れると思います。
かなり強引ですが、こんなのとか...

@foo = split(/\//,$ENV{SCRIPT_NAME});
$bar = $#foo - 2; # ファイル名と現在のディレクトリをカット
for(0..$bar){
$see .= "$_/";
}


2:[質問] toto [2002/11/08 15:27 ]

>最初に
>$see = '/sample';
>のような決め打ちをしないという事なのであれば、
決め打ちはできないです。できれば、
../sampleという書き方をしかったのですが、
CGIではそれはできないのでしょうか?


3:[回答] andi [2002/11/08 17:45 ]

> 決め打ちはできないです。できれば、
> ../sampleという書き方をしかったのですが、
> CGIではそれはできないのでしょうか?

状況を教えて下さい。
どこまで試されましたか?


4:[回答] ひじ [2002/11/09 10:53 ]

>/cgi-bin/test.cgi
>/sample
って、仮想パス(http://host/path の /path の部分)ですよね?
仮想パスが実際にどのファイルに対応しているか(物理パス)が
分からないと、回答のしようがありません。

・サーバがWindows系である
・"cgi-bin"ディレクトリと"sample"ディレクトリが同じ階層にある
という仮定をすると、
'..\sample' で行けると思いますが。


5:[質問] toto [2002/11/09 12:18 ]

返事遅れてすみません。

>・サーバがWindows系である
>・"cgi-bin"ディレクトリと"sample"ディレクトリが同じ階層にある
>という仮定をすると、
>'..\sample' で行けると思いますが。
サーバがWindows系で、"cgi-bin"ディレクトリと
"sample"ディレクトリは、サーバ自体が別れてます。
(IISの設定でネットワーク上ドライブを共有しいてます)
物理的に共有ドライブが見えない以上無理かなと思うのですが・・・


6:[回答] ひじ [URL] [2002/11/09 13:45 ]

http://host/cgi-bin/test.cgi/sample
というURLでアクセスして $ENV{'PATH_TRANSLATED'}


7:[関連] ひじ [2002/11/09 13:47 ]

IISということなら、ASP(ActiveServerPages)で書いて
Server.MapPath() メソッドを使う、という手もあります。
http://www.microsoft.com/japan/developer/library/jpiis/iishelp/iis/asp/vbob98iw.htm


8:[完了] toto [2002/11/09 16:23 ]

>http://host/cgi-bin/test.cgi/sample
>というURLでアクセスして $ENV{'PATH_TRANSLATED'}
これだとエラーになっちゃうんですが・・・

IIS上では、
|
|-cgi-bin
|-sample
のように同じ階層ですが、
物理的には、
C:\Inetpub\wwwroot\cgi-bin
\\server_name\sample
となってるんですね。

やっぱり、物理的に繋がってないディレクトリを
CGI(Perl)で見にいくこちは無理なんでしょうね。
ひじさん、ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World