WEB相談室

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

タイトル:perlでパーミッション変更

0:[投稿] えぴく [2002/06/06 12:45 ][環境:WIN+IE UNIX系+Perl]

こんにちは。
$test='test.txt';
chmod(0666,$test);
という感じでパーミッション変更を試みているのですがうまくいきません。
調べたところ、書き方は他の方の記述したコードと変わらないようで、大丈夫と判断しています。実行した後にftpソフトで変更されたか確認してみますが、うまくいっていません。

test.txtのはじめのパーミッション(ftpで設定)がどうであれ、chmod関数で変更できるものなのでしょうか。
また、他のサーバーのCGIから上記ファイルのパーミッションを変更することは、もちろん無理でしょうが、同一サーバー内からなら可能なのですか?
ご教授お願い致します。


1:[回答] B-Cus [2002/06/06 13:10 ]

chmod(0666,$test) or print "$!"
としてエラーになっているかどうか確認してみては。

ファイルが存在しないか、ファイルの所有者でないのでは
ないかと思います。

> test.txtのはじめのパーミッション(ftpで設定)がどうであれ、
> chmod関数で変更できるものなのでしょうか。

そうです。そのファイルの所有者であれば。

> 同一サーバー内からなら可能なのですか?

そうです。


2:[保留] えぴく [2002/06/06 16:23 ]

試してみましたが、エラーはありませんでした。
レンタルサーバーの自分の領域でcgiを動作させているので、「ファイルの所有者」だとは思うのですが。
ファイルも存在し、データを上書き保存する処理をきちんとこなしていました。
もう少し考えてみます。。


3:[回答] TOM neko [2002/06/06 17:41 ]

CGIとしてファイルにアクセスするときのユーザ名は、設定によって変わりますが、wwwとかnobodyとかapacheとかで、ftpでログインしたときのユーザ名とは違うのがデフォルトです。
オーナー権限でCGIを実行するようになってるサーバなら、同じになります。


4:[関連] 下級天使 [2002/06/06 17:59 ]

http://tohoho.wakusei.ne.jp/lng/199905/99050165.htm
の下から2番目のレス辺りはどうでしょうか?


5:[回答] B-Cus [2002/06/06 18:41 ]

> 試してみましたが、エラーはありませんでした。

本当ですか? 本当に
 chmod(0666,$test) or print "$!"
をやって、何もエラーが出力されなかったのですか?

$test にちゃんと目的のファイルが入っていますか?

 chmod(0666,$test) or print "$!"

 chmod(0666,$test);
 print "hoge";
とすると、画面に "hoge" が表示されますか?

これらの問題がないのに、エラーが出ず、パーミッションが
666 に変わらないなら、それは OS のバグか、perl のバグでしょう。

普通は、「所有者でない」「ファイルが存在しない」などのエラーが
発生したら、$! に "Not owner" とか "No such file or directory"
などのエラーの情報が入ります。


6:[回答] えぴく [2002/06/07 10:48 ]

ご丁寧にありがとうございます。
> 本当ですか?

どうも、エラーにはなりません。
ただ、TOM nekoさん、下級天使さんの示されていた「CGIかFTPか」については、思い当たることがありました。
今回パーミッション変更しようとしているファイルはFTPからあげたもので、試しにCGIであげたものをパーミッション変更してみました(異なるスクリプトですが)が、うまくいきました。

エラーが出ないのがなぜなのかは謎ですが、パーミッション変更できない原因は、やはりユーザーの違いだったんでしょうか。
まさかCGIとFTPのアップの違いでユーザーが変わってくるなんて思いもしませんでした。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World