2009-08-06 10 views
19

私はfile_put_contentsを使用してファイルを作成しています。私のPHPプロセスは、ディレクトリに書き込む権限を持つグループで実行されています。ただし、file_put_contentsが呼び出された場合、結果のファイルにはグループ書き込みアクセス権がありません(最初は正常に作成されます)。つまり、ファイルを上書きしようとすると、アクセス権が不足しているために失敗します。グループ書き込み権限を持つfile_put_contentsでファイルを作成するにはどうすればよいですか?

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

答えて

21

file_put_contentsを呼び出す前にumaskを設定しようとすると、作成時にファイルに与えられる既定のアクセス許可が変更されます。

もう1つの方法は、ファイルが作成された直後に、chmodを使用してアクセス許可を変更することです。


まあ、再読み込み質問の後、私はそれをよく理解願っています...

2

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

明示したい場合は、ファイルおよび/またはディレクトリに適切なものを設定するためにchmod()を使用してください。

+0

Hmm ...ディレクトリへのアクセス権がありますが、問題は同じファイルの別のスクリプトからfile_put_contentsを何度も呼び出すことですが、連続した時間が失敗することです。 –

21

例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は、それぞれの所有者、グループ、および他のための書き込み可能なためです。

関連する問題