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
[[解決]]
すみません、、解決をチェックしてませんでした。
[上に]
[前に]
[次に]