perlでファイルを作成するには?

[上に] [前に] [次に]
いそのり [E-Mail] 1999/09/09(木) 18:16:54
perlでは、既存ファイルへの書き込みやファイルの削除はできるようですが、ファイルを作成するにはどうしたらよいのでしょうか?

ちなみに、他のホームページで「書き込み時にファイルが存在しないとファイルが作成される」と書かれていたのでやってみたのですが、作成されませんでした。

Aurai 1999/09/09(木) 18:21:48
実行環境はどのようになっています?
もしUNIX系のOSをお使いならばディレクトリのパーミッションを確認してください
書き込みが不許可になっていませんか?

いそのり 1999/09/09(木) 19:19:00
ご指摘ありがとうございます。
ディレクトリのパーミッションを777にしたらできました。

追加の質問ですが、
perlからファイルのパーミッションを変更したいのですが、
chmod(666,$data);
では644のままです。どうしたらよいか教えていただけませんか。

B-Cus 1999/09/09(木) 19:25:14
> chmod(666,$data);
0666です。8進表記。

でも、644のままってことは、CGIの実行権限とそのファイルのオーナーが
違うんでしょう。パーミッションを変更できるのは、ファイルのオーナー
のみです。

ここらへんは、CGIがnobody権限で動いている(かどうかわからんけど、
症状から見ると多分そう)からです。

# という説明でわかるかな〜。誰かわかりやすく説明して。

わからないままやってると、「CGIで作ったファイルが消せません」
てなことになりまっせ。

mm 1999/09/10(金) 00:35:22
CGIがオーナー権限で動いてるなら、もともとCGIでファイルの新規作成は
できるので、今回の問題は起きないハズでしょう(FTPで転送できる
ディレクトリならオーナーの書き込み権限はあるハズ)。

だらか、いそのりさんが今使ってるサーバーでは、CGIでパーミッションの
設定はできません、ってコトでいいんじゃないのかなぁ…
(実行権限が変更できる場合は別だけど…)

# このあたり、B-Cus さんに教えてもらうまでは、CGIで普通に
# パーミッションの設定はできるものだと思ってました(^^;

ふじ 1999/09/10(金) 02:16:24
>だらか、いそのりさんが今使ってるサーバーでは、CGIでパーミッションの
>設定はできません、ってコトでいいんじゃないのかなぁ…
何だか誤解を招く言い方のような・・・

CGI が nobody で動いていて、nobody 以外の所有者のファイル
(例えばユーザがFTPで上げたとか)のパーミッションを CGI で
変えようとしているのではないですか?

CGI で作ったファイルなら CGI からパーミッションを変更できるはずですが。

mm 1999/09/10(金) 02:49:07
>CGI で作ったファイルなら CGI からパーミッションを変更できるはずですが。
なるほど、おっしゃる通りです。
普段CGIをオーナー権限で実行してるので、うっかり忘れてました(^^;
すいません、混乱させて…

いそのり 1999/09/10(金) 10:46:09
[[解決]]
B-Cusさんのご指摘どおり、
chmod(0666,$data);
としたら変更することができました。

本当にありがとうございました。

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