Crear carpetas en Windows con PHP y asignarle permisos
En esta publicaciones explicamos como crear carpetas en Windows con PHP y asignarle permisos de forma optima y que realmente funcione para que no salgan error de lectura o escritura en los archivos guardados en estas carpetas.
Crear carpeta con PHP y asignarle permisos
La forma rápida de crear una carpeta con PHP es con el siguiente código:
$path = "c:/ruta o carpeta/"; mkdir($path, 0777, true);
Validar si la carpeta existe o crearla
Esta claro que este código funciona muy bien en Linux.
También podemos usar líneas de código para validar si la carpeta existe o sino podemos crearla mediante ejecutamos el código:
$path = "c:/ruta o carpeta/"; if (!file_exists($path)) { mkdir($path, 0777, true); }
Crear carpetas en Windows con PHP y asignarle permisos con comando de CMD
Pero si intentamos esto en Windows la carpeta se va a crear pero no podremos leer los archivos que se guarden dentro ya que no tendrán los permisos de lectura y escritura porque el chmod 0777 que agregamos en el código no funciona en Windows.
Lo que se debe hacer en Windows es que después de crear la carpeta sin asignarle ningún chmod debemos ejecutar mediante PHP el código que usamos normalmente para asignar permisos de lectura y escritura a las carpetas en CMD el cual es icacls.
El código que funciona sería el siguiente:
$path = "c:/ruta o carpeta/"; if (!file_exists($path)) { mkdir($path); } exec($cmd . "icacls c:/ruta o carpeta/ /grant Everyone:F /t");
Una vez que se ejecuta la linea de codigo:
exec($cmd . "icacls c:/ruta o carpeta/ /grant Everyone:F /t");
Este le asigna los permisos de lectura y escritura para la carpeta y los archivos que se guarden en ella.
En este enlace pueden leer mas sobre los permisos icacls cmd en windows https://docs.microsoft.com/es-mx/windows-server/administration/windows-commands/icacls
Si tiene alguna duda puede dejar un comentario en esta publicación para aclararla.
También comentar si quiere publicar un tutorial.
Saludos!!