web-dev-qa-db-ja.com

グループ書き込み権限を持つfile_put_contentsでファイルを作成するにはどうすればよいですか?

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

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

26
Sean Clark Hess

file_put_contentsを呼び出す前に umask を設定してみてください:ファイルの作成時にファイルに付与されるデフォルトの権限が変更されます。

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


さて、質問をもう一度読んだ後、よく理解できたらいいのですが...

23
Pascal MARTIN

例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は、所有者、グループ、その他のそれぞれに対して書き込み可能です。

28
danamlund

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

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

2
cletus