2009-08-06 10 views
19

Sto usando file_put_contents per creare un file. Il mio processo php è in esecuzione in un gruppo con autorizzazioni per scrivere nella directory. Quando viene chiamato il numero file_put_contents, tuttavia, il file risultante non dispone di autorizzazioni di scrittura di gruppo (crea correttamente la prima volta). Ciò significa che se provo a sovrascrivere il file fallisce a causa della mancanza di permessi.Come posso creare un file con file_put_contents con permessi di scrittura di gruppo?

C'è un modo per creare il file con permessi di scrittura di gruppo?

risposta

21

È possibile provare a impostare umask prima di chiamare file_put_contents: cambierà le autorizzazioni predefinite che verranno assegnate al file al momento della creazione.

L'altro modo (meglio, secondo la documentazione) è utilizzare chmod per modificare le autorizzazioni, subito dopo la creazione del file.


Ebbene, dopo aver riletto la domanda, spero ho capito bene ...

2

Per aprire il file e scrivere sui contenuti, è necessario disporre dei permessi di scrittura sul file. È importante capire la distinzione. Per sovrascrivere l'intero file è necessario disporre delle autorizzazioni di scrittura nella directory .

Utilizzare chmod() per impostare cosa è appropriato sul file e/o sulla directory se si desidera essere espliciti a riguardo.

+0

Hmm ... I DO hanno le autorizzazioni per la directory, il problema è che voglio chiamare file_put_contents più volte da diversi script sullo stesso file, ma le volte successive falliscono. –

21

Esempio 1 (set di file-autorizzazioni per lettura scrittura per proprietario e il gruppo, e leggere per gli altri):

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

Esempio 2 (creare un file scrivibili dal gruppo senza modificare altre autorizzazioni):

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

Esempio 3 (Crea file scrivibili da tutti, senza modificare altre autorizzazioni):

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

128, 16, 2 sono per scrivibile per il proprietario, il gruppo e l'altro, rispettivamente.

Problemi correlati