una todos tabla permission permisos los dar carpeta archivos archivo php mkdir

todos - ¿Por qué PHP no puede crear un directorio con 777 permisos?



mkdir(): permission denied (5)

El modo es modificado por su umask actual, que es 022 en este caso.

La forma en que funciona el umask es un sustractivo. Toma el permiso inicial dado a mkdir y resta umask para obtener el permiso real :

0777 - 0022 ====== 0755 = rwxr-xr-x.

Si no quieres que esto suceda, debes configurar tu umask temporalmente en cero para que no tenga efecto. Puedes hacer esto con el siguiente fragmento de código:

$oldmask = umask(0); mkdir("test", 0777); umask($oldmask);

La primera línea cambia el valor de umask a cero mientras se almacena el anterior en $oldmask . La segunda línea hace que el directorio use los permisos deseados y (ahora irrelevante) umask . La tercera línea restaura el umask a lo que era originalmente.

Consulte la documentación de PHP para umask y mkdir para obtener más detalles.

Estoy tratando de crear un directorio en mi servidor usando PHP con el comando:

mkdir("test", 0777);

Pero no da permisos completos, solo estos:

rwxr-xr-x


Evite utilizar esta función en servidores web multiproceso. Es mejor cambiar los permisos de archivo con chmod () después de crear el archivo.

Ejemplo:

$dir = "test"; $permit = 0777; mkdir($dir); chmod($dir, $permit);


La creación de archivos y directorios se ve afectada por la configuración de umask. Puede crear archivos con un conjunto particular de permisos manipulando umask de la siguiente manera:

$old = umask(0); mkdir("test", 0777); umask($old);


Para quienes lo intentaron.

mkdir(''path'', 777);

y no funcionó.

Se debe a que, aparentemente, el 0 que precede al modo de archivo es muy importante, ya que le dice a chmod que interprete el número pasado como un octal en lugar de un decimal.

Reference

PD. Esto no es una solución a la pregunta, sino solo un complemento a la respuesta aceptada.


Probablemente, tu umask está configurado para excluir esos