2009-08-06 8 views
19

Używam file_put_contents do utworzenia pliku. Mój proces php działa w grupie z uprawnieniami do zapisu w katalogu. Po wywołaniu file_put_contents plik wynikowy nie ma uprawnień do zapisu grupowego (za pierwszym razem tworzy się dobrze). Oznacza to, że jeśli spróbuję nadpisać plik, to zawiedzie z powodu braku uprawnień.Jak mogę utworzyć plik z file_put_contents, który ma uprawnienia zapisu grupowego?

Czy istnieje sposób na utworzenie pliku z uprawnieniami do zapisu grupowego?

Odpowiedz

21

Możliwe, że spróbuj ustawić umask przed wywołaniem file_put_contents: spowoduje to zmianę domyślnych uprawnień, które zostaną nadane plikowi po jego utworzeniu.

Innym sposobem (lepiej, zgodnie z dokumentacją) jest użycie chmod do zmiany uprawnień, tuż po utworzeniu pliku.


Cóż, po ponownym przeczytaniu pytanie, mam nadzieję, że dobrze zrozumiałem ...

2

Aby otworzyć plik i zapisać nad treścią, musisz mieć uprawnienia do zapisu w pliku. Ważne jest zrozumienie rozróżnienia. Aby nadpisać cały plik, musisz mieć uprawnienia do zapisu do katalogu :.

Użyj opcji chmod(), aby ustawić odpowiednie ustawienia w pliku i/lub katalogu, jeśli chcesz uzyskać wyraźne informacje na jego temat.

+0

Hmm ... Mam uprawnienia do katalogu, problemem jest to, że chcę wywołać file_put_contents kilka razy z różnych skryptów na tym samym pliku, ale kolejne czasy się nie udają. –

21

Przykład 1 (zestaw file-uprawnienia do odczytu i zapisu dla właściciela i grupy i czytać o innych)

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

Przykład 2 (należy pliku zapisu dla grupy bez zmiany innych uprawnień)

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

Przykład 3 (marka pliku zapisu dla wszystkich bez zmiany innych uprawnień)

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

128, 16, 2 są przeznaczone do zapisu dla właściciela, grupy i innych, odpowiednio.

Powiązane problemy