2009-08-06 29 views
19

Dosya oluşturmak için file_put_contents kullanıyorum. Php işlemim dizine yazma izni olan bir grupta çalışıyor. Ancak, file_put_contents çağrıldığında, sonuçta oluşan dosya grup yazma izinlerine sahip değildir (ilk kez iyi oluşturur). Bu, dosyanın üzerine yazmaya çalışırsa, izin eksikliğinden dolayı başarısız olur.Grup yazma izinleri olan bir dosyaya nasıl dosya oluşturabilirim?

Grup yazma izinleriyle dosyayı oluşturmanın bir yolu var mı?

cevap

21

file_put_contents numaralı telefonu aramadan önce umask'u ayarlamayı deneyebilirsiniz: bu, oluşturulduğunda dosyaya verilecek varsayılan izinleri değiştirir.

Diğer yol (belgelere göre daha iyi), dosya oluşturulduktan hemen sonra izinleri değiştirmek için chmod kullanmaktır.


soruyu yeniden okuduktan sonra Eh, ben de onu anIadiniz ...

2

Dosyayı açmak ve içeriği yazmak için dosyaya yazma iznine ihtiyacınız vardır. Ayrımı anlamak önemlidir. Tüm dosyanın üzerine yazmak için dizini dizinine gerçekten yazma iznine ihtiyacınız vardır.

chmod()'u, dosya ve/veya dizinde neyin uygun olup olmayacağını belirlemek için kullanın.

+0

Hmm ... Dizinde izinlerim var, sorun aynı dosyadaki farklı komut dosyalarından defalarca file_put_contents aramak istiyorum, ancak ardışık zamanlarda başarısız. –

21

Örnek 1 (set dosya izinleri sahibi ve grup için okuma-yazma, ve diğerleri için okuma):

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

Örnek 2 (diğer izinleri değiştirmeden grubu ile dosyası yazılabilir):

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

Örnek 3 (diğer izinleri değiştirmeden herkes tarafından dosyası yazılabilir):

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

128, 16, 2, sırasıyla sahibi, grubu ve diğeri için yazılabilir içindir.

İlgili konular