• ベストアンサー

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

PerlのCGIをWindowsとLinuxで作成しています。 Windowsでは素直に書き込めますが、Linuxではエラーもなくあたかも正常なように終了しますが、ファイルが書き込まれていません。 open(OUT, "> test.jpg"); binmod OUT; print(OUT $file); close(OUT); Windowsはバイナリ対策でbinmodをつけるおまじないが必要ですがLinuxの場合はCGIの書き込み命令が必要なのでしょうか? ディレクトリ自体を書き込み権限付ければ安直ですが、 ディレクトリのパーミッションはそのままにして書き込みを行いたいです。

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

  • ベストアンサー
  • shige_70
  • ベストアンサー率17% (168/946)
回答No.3

#2さんの回答通りです。 そもそも、権限つけるのが安直、と言う考え方が間違ってます。権限がなければ書き出し不可能なのは当たり前で、ディレクトリ上にファイルを作成する(ディレクトリを変更する)には、ディレクトリにwrite権限をつけなければならないのです。セキュリティを心配される気持ちもわかりますが、、、 httpd(apache等)の設定によりますが、一般的にはhttpdがファイルアクセスする際のユーザはnobodyになり、グループは一般ユーザとは異なるのが普通ですので、ディレクトリのモードは707にしておけば良いでしょう。

その他の回答 (2)

  • estea
  • ベストアンサー率44% (39/87)
回答No.2

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

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

> binmod OUT; 正しくは binmode(OUT); > print(OUT $file); 正しくは print OUT $file; または print OUT "$file";

関連するQ&A