recursive - php chmod directory
PHP crea directorios anidados (8)
Necesito ayuda con una función para crear un directorio de 2 niveles para las siguientes situaciones:
- El subdirectorio deseado existe en el directorio padre, no hacer nada.
- El directorio principal existe, el subdirectorio no existe. Cree solo el subdirectorio.
- Ni el directorio principal ni el subdirectorio, primero cree el directorio principal y luego el subdirectorio.
- Si alguno de los directorios no se creó correctamente, devuelva FALSE.
Gracias por la ayuda.
A partir de PHP 5.0+, mkdir tiene un parámetro recursivo que creará cualquier padre faltante.
Cuánto sufrí ... y obtuve este guión ...
function recursive_mkdir($dest, $permissions=0755, $create=true){
if(!is_dir(dirname($dest))){ recursive_mkdir(dirname($dest), $permissions, $create); }
elseif(!is_dir($dest)){ mkdir($dest, $permissions, $create); }
else{return true;}
}
La función que estás buscando es MKDIR. Utilice el último parámetro para crear directorios de forma recursiva. Y lea la documentación.
Ver mkdir
, en particular el parámetro $recursive
.
puede intentar usar file_exists para verificar si una carpeta existe o no y is_dir
para verificar si es una carpeta o no.
if(file_exists($dir) && is_dir($dir))
Y para crear un directorio puedes usar la función mkdir
Entonces el resto de su pregunta es simplemente manipular esto para satisfacer los requisitos
recursivo Permite la creación de directorios anidados especificados en la ruta de acceso. pero no funciono para mi !! para eso aquí es lo que se me ocurrió! y funciona muy perfecto !!
$upPath = "../uploads/RS/2014/BOI/002"; // full path
$tags = explode(''/'' ,$upPath); // explode the full path
$mkDir = "";
foreach($tags as $folder) {
$mkDir = $mkDir . $folder ."/"; // make one directory join one other for the nest directory to make
echo ''"''.$mkDir.''"<br/>''; // this will show the directory created each time
if(!is_dir($mkDir)) { // check if directory exist or not
mkdir($mkDir, 0777); // if not exist then make the directory
}
}
Utilice el tercer parámetro de mkdir()
:
recursivo Permite la creación de directorios anidados especificados en la ruta de acceso. El valor predeterminado es FALSO.
$path = ''/path/to/folder/with/subdirectory'';
mkdir($path, 0777, true);
// Desired folder structure
$structure = ''./depth1/depth2/depth3/'';
// To create the nested structure, the $recursive parameter
// to mkdir() must be specified.
if (!mkdir($structure, 0744, true)) {
die(''Failed to create folders...'');
}
Returns TRUE on success or FALSE on failure.