2009-08-06 123 views
19

我正在使用file_put_contents創建一個文件。我的php進程正在有權寫入目錄的組中運行。但是,調用file_put_contents時,生成的文件不具有組寫入權限(第一次創建就好)。這意味着如果我嘗試覆蓋文件,則由於缺少權限而失敗。如何使用具有組寫入權限的file_put_contents創建文件?

有沒有辦法用組寫入權限創建文件?

回答

21

在調用file_put_contents之前,您可以嘗試設置umask:它將更改在創建文件時將賦予該文件的默認權限。

另一種方式(根據文檔更好)是使用chmod在創建文件之後更改權限。


好,重新閱讀的問題後,我希望我的理解是好...

2

要打開文件並寫入內容,則需要爲文件寫入權限。瞭解這種區別很重要。要覆蓋整個文件,您實際上需要對目錄的寫入權限。

使用chmod()可以在文件和/或目錄中設置什麼是適當的,如果你想明確它的話。

+0

嗯......我對目錄有權限,問題是我想從同一個文件上的不同腳本多次調用file_put_contents,但連續時間失敗。 – 2009-08-06 16:33:49

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分別表示可寫爲擁有者,組等。

相關問題