CGIでいうカレントディレクトリとは??

[上に] [前に] [次に]
GooGoo 2000/01/27(木) 15:54:05
はじめまして。GooGooといいます。
自分のホームページを開設し、掲示板を置きたいとおもって
CGIで掲示板を作成しているのですが、カレントディレクトリ
についてわからないので教えて下さい。
※テストしろ!といわれそうですが、うちのプロバイダは
  コードをチェックし、CGIはユーザーディレクトリとは
  別の場所にそのスクリプトを設置しエリアスを定義する
  というやりかたのために、完成するまで、頼めないの
  です、、。

  単純な質問ですが、CGIスクリプト(Perl)の中で
  open( IN, "bbs_log.txt" );
  としたとき、このCGIをpublic_htmlの中のHTML
  からコールしたとき、このbbs_log.txtはpublic_html
  の中のものをさすのでしょうか?それともプロバイダが
  設置したCGIディレクトリの中のbbs_log.txtをさすの
  でしょうか???もし、プロバイダの指定したディレクトリ
  のばあい、public_htmlの中のファイルにしたい場合は
  どういう指定をすればよろしいのでしょうか???

ふじ 2000/01/27(木) 16:15:17
普通は(Apacheとか)、動作しているCGIスクリプトの置いてある
場所がカレントになります。
単に
open IN, "bbs_log.txt";
とすると、CGIディレクトリの中にある bbs_log.txt を指します。
#IISだとそうならなかったりした気が・・・

> public_htmlの中のファイルにしたい場合
1. 絶対パスで指定する
open IN, "/home/hoge/public_html/bbs_log.txt";
とか。

2. CGIディレクトリからの相対パスで記述する。
/home
   + hoge
        + public_html
             + bbs_log.txt
             + cgi-bin
                  + fuga.cgi
ディレクトリ構成が例えば上のようだったら、
open IN, "../bbs_log.txt";
とか。

Perl5なら、

use Cwd;
print cwd();

とすると、カレントディレクトリが得られます。
#一部、使えないプロバイダもあるようですが。

ちなみに、
>このCGIをpublic_htmlの中のHTMLからコールしたとき
どこから呼ぼうと、CGIのカレントディレクトリには影響しません。

GooGoo 2000/01/27(木) 16:26:41
ふじさん、レスありがとうございます。m(__)m
たとえば、ユーザーIDがuserでURLが
http://www.server.ne.jp/~user(ここがpublic_html)
の場合、ファイルを開くときは
/home/user/public_html/bbs_log.txt
で、よろしいのでしょうか?
チルダは必要なものなのでしょうか?
/home/~user/public_html/bbs_log.txt

Windowsメインメインなので、ぜんぜん
わからなくて、ごめんなさい、、、。

B-Cus 2000/01/27(木) 16:33:13
チルダは必要ありません。では
 /home/user/public_html/bbs_log.txt
かというと、必ずしもそうとは限りません。
 /home/hoge/user/public_html/bbs_log.txt
だったする可能性もありますし、/home 以下でない
可能性もあります。

telnet か ftp でつないで bbs_log.txt のあるディレクトリに
移動して、pwd するのが一番確実。

ふじ 2000/01/27(木) 16:34:34
> /home/user/public_html/bbs_log.txt
これは各々のサーバによって違いますので、
管理者なりプロバイダなりに確認しましょう。

> チルダは必要なものなのでしょうか?
この場合は必要ないです。

GooGoo 2000/01/27(木) 16:40:36
ふじさん、B-Cusさん、
本当にありがとうございます!!
さっそくftpでpwdというのをやってみます。
また、なにかありましたら(わからないことばかりなので)
よろしくおねがいします。
ありがとうございました。

GooGoo 2000/01/27(木) 16:42:52
[[解決]]
すみません、、解決をチェックしてませんでした。

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