30

ファイルの作成に使用file_put_contentsしています。私のphpプロセスは、ディレクトリへの書き込み権限を持つグループで実行されています。ただし、 が呼び出されると、結果のファイルにfile_put_contentsはグループの書き込み権限がありません (最初は問題なく作成されます)。これは、ファイルを上書きしようとすると、権限がないために失敗することを意味します。

グループ書き込み権限でファイルを作成する方法はありますか?

4

3 に答える 3

37

例 1 (所有者とグループのファイル許可を読み取り/書き込みに設定し、その他のファイル許可を読み取りに設定します):

file_put_contents($filename, $data);
chmod($filename, 0664);

例 2 (他のパーミッションを変更せずにファイルをグループで書き込み可能にする):

file_put_contents($filename, $data);
chmod($filename, fileperms($filename) | 16);

例 3 (他のパーミッションを変更せずに、誰でもファイルを書き込み可能にする):

file_put_contents($filename, $data);
chmod($filename, fileperms($filename) | 128 + 16 + 2);

128、16、2 は、それぞれ所有者、グループ、その他の書き込み可能です。

于 2009-08-06T18:59:04.113 に答える
26

umaskを呼び出す前に を設定してみてくださいfile_put_contents。ファイルの作成時にファイルに与えられるデフォルトのアクセス許可が変更されます。

もう 1 つの方法 (ドキュメントによると、より良い方法) はchmod、ファイルが作成された直後に、 を使用してアクセス許可を変更することです。


さて、質問を読み直した後、よく理解できたと思います...

于 2009-08-06T16:31:57.483 に答える
2

ファイルを開いて内容を上書きするには、ファイルへの書き込み権限が必要です。違いを理解することが重要です。ファイル全体を上書きするには、実際にはディレクトリへの書き込み権限が必要です。

chmod()明確にしたい場合は、ファイルやディレクトリに適切なものを設定するために使用します。

于 2009-08-06T16:28:22.077 に答える