2011-10-24 15 views
6

Ho un server Linux con appache come server web. Nel mio script PHP sto creando directory con la modalità 0777. il codice è piuttosto semplice come segue:Permessi PHP mkdir()

mkdir($path,0777) 

quando ho eseguito questo script e vado al mio manager server di file, la cartella è lì, ma il permesso assegnato a quella cartella è 0755. Non riesco a capire perché questo sta succedendo!! quando viene creata la cartella colonna utente ha apache in essa, ma il permesso è 0755.

risposta

21

Si dovrebbe provare con la umask

$old = umask(0); 
mkdir($path,0777); 
umask($old); 
+0

grazie! risolto il problema ... ma ancora confuso perché il mio script nt è riuscito a creare il permesso di 777 cartelle? – samach

+0

@Salmanmahmood: questo è qualcosa che dovrebbe essere compreso in Linux http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html solo un link per il riferimento –

+3

Normalmente, umask è 022, il che significa ignorare qualsiasi gruppo o altre autorizzazioni di scrittura. Quindi, se le autorizzazioni richieste sono 0777, le autorizzazioni concesse sono 0777 - 022 = 0755. – MetaEd

3

Si può provare:

chmod (string $filename , int $mode) 

vedere se questo può risolvere il problema di autorizzazioni.

0

Apache potrebbe non avere i permessi per cambiare questo. Quello che puoi fare è Assicurati che apache sia in esecuzione nello stesso gruppo del gruppo di file corrente. Quindi apache sarà in grado di apportare modifiche a quel file. Puoi cambiare il tuo gruppo di apache in questa configurazione di apache. O il modo più semplice è quello di cambiare l'intero utente del progetto come utente apache. Quindi apache può fare i cambiamenti che vuole.

passare al file dal server e di tipo ls -al e guardare l'utente e il gruppo

0

potrebbe essere la vostra umask:

<?php 
$old = umask(0); 
mkdir($dir,0777); 
mask($old); 
?>