2011-10-24 24 views
6

Tengo un servidor Linux con Apache como servidor web. En mi script PHP estoy haciendo directorios con el modo 0777. el código es bastante simple de la siguiente manera:PHP mkdir() permisos

mkdir($path,0777) 

cuando corro este script y voy al administrador de archivos del servidor, la carpeta está ahí, pero el permiso asignado a esa carpeta es 0755. No puedo entender por qué este ¡¡está sucediendo!! cuando se crea la carpeta de la columna el usuario ha apache en ella, pero el permiso es 0755.

Respuesta

21

Usted debe tratar con el umask

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

gracias! Resolvió el problema ... pero todavía confundido ¿por qué mi script no pudo crear el permiso de la carpeta 777? – samach

+0

@Salmanmahmood: Esto es algo que debe entenderse en Linux http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html solo un enlace para su referencia –

+3

Normalmente, umask es 022, lo que significa ignorar cualquier grupo u otros permisos de escritura. Entonces, si los permisos solicitados son 0777, entonces los permisos otorgados son 0777 - 022 = 0755. – MetaEd

3

Usted puede tratar de:

chmod (string $filename , int $mode) 

ver si se puede solucionar el problema de permisos.

0

Apache podría no tener los permisos para cambiar esto. Lo que puedes hacer es Asegúrese de que apache se esté ejecutando en el mismo grupo que su grupo de archivos actual. Entonces apache podrá hacer cambios en ese archivo. Puedes cambiar tu grupo apache en esta configuración de Apache. O la forma más fácil es cambiar todo el usuario del proyecto para que sea el usuario de apache. Entonces apache puede hacer cambios que quiera.

vaya al archivo desde el servidor y el tipo ls -al y observe el usuario y el grupo

0

podría ser su máscara de usuario:

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