こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Linuxの場合はCGIの書き込み命令が必要なのでしょうか?

PerlのCGIをWindowsとLinuxで作成しています。
Windowsでは素直に書き込めますが、Linuxではエラーもなくあたかも正常なように終了しますが、ファイルが書き込まれていません。

open(OUT, "> test.jpg");
binmod OUT;
print(OUT $file);
close(OUT);

Windowsはバイナリ対策でbinmodをつけるおまじないが必要ですがLinuxの場合はCGIの書き込み命令が必要なのでしょうか?

ディレクトリ自体を書き込み権限付ければ安直ですが、
ディレクトリのパーミッションはそのままにして書き込みを行いたいです。

投稿日時 - 2003-08-31 10:05:35

QNo.642415

暇なときに回答ください

質問者が選んだベストアンサー

#2さんの回答通りです。

そもそも、権限つけるのが安直、と言う考え方が間違ってます。権限がなければ書き出し不可能なのは当たり前で、ディレクトリ上にファイルを作成する(ディレクトリを変更する)には、ディレクトリにwrite権限をつけなければならないのです。セキュリティを心配される気持ちもわかりますが、、、

httpd(apache等)の設定によりますが、一般的にはhttpdがファイルアクセスする際のユーザはnobodyになり、グループは一般ユーザとは異なるのが普通ですので、ディレクトリのモードは707にしておけば良いでしょう。

投稿日時 - 2003-09-01 00:45:14

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

パーミッションは要ります。

最初からファイルを作ってパーミッションを与えておけば別ですが。

投稿日時 - 2003-08-31 14:15:42

ANo.1

> binmod OUT;

正しくは
binmode(OUT);

> print(OUT $file);

正しくは
print OUT $file;
または
print OUT "$file";

投稿日時 - 2003-08-31 11:34:24

あなたにオススメの質問