una txt reemplazar funciona ficheros eliminar directorio contenido como carpeta buscar borrar borra archivos archivo php file filesystems directory

txt - reemplazar archivo php



Cómo eliminar una carpeta con contenido usando PHP (6)

Aquí hay un script que hará justo lo que necesita:

/** * Recursively delete a directory * * @param string $dir Directory name * @param boolean $deleteRootToo Delete specified top-level directory as well */ function unlinkRecursive($dir, $deleteRootToo) { if(!$dh = @opendir($dir)) { return; } while (false !== ($obj = readdir($dh))) { if($obj == ''.'' || $obj == ''..'') { continue; } if (!@unlink($dir . ''/'' . $obj)) { unlinkRecursive($dir.''/''.$obj, true); } } closedir($dh); if ($deleteRootToo) { @rmdir($dir); } return; }

Lo obtuve de php.net y funciona.

Esta pregunta ya tiene una respuesta aquí:

Necesito eliminar una carpeta con contenido usando PHP. rmdir() y unlink() eliminan carpetas vacías, pero no pueden eliminar carpetas que tienen contenido.



Deberá eliminar todos los archivos recursivamente. Hay muchas funciones de ejemplo en los comentarios de la página de manual de rmdir :

http://www.php.net/rmdir


Esta función le permitirá eliminar cualquier carpeta (siempre que sea escribible) y sus archivos y subdirectorios.

function Delete($path) { if (is_dir($path) === true) { $files = array_diff(scandir($path), array(''.'', ''..'')); foreach ($files as $file) { Delete(realpath($path) . ''/'' . $file); } return rmdir($path); } else if (is_file($path) === true) { return unlink($path); } return false; }

O sin recursion usando RecursiveDirectoryIterator :

function Delete($path) { if (is_dir($path) === true) { $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST); foreach ($files as $file) { if (in_array($file->getBasename(), array(''.'', ''..'')) !== true) { if ($file->isDir() === true) { rmdir($file->getPathName()); } else if (($file->isFile() === true) || ($file->isLink() === true)) { unlink($file->getPathname()); } } } return rmdir($path); } else if ((is_file($path) === true) || (is_link($path) === true)) { return unlink($path); } return false; }


No existe una estructura de función única en PHP que permita esto, usted debe escribir el suyo con rmdir y desvincularse.

Un ejemplo (tomado de un comentario en php.net docs ):

<? // ensure $dir ends with a slash function delTree($dir) { $files = glob( $dir . ''*'', GLOB_MARK ); foreach( $files as $file ){ if( substr( $file, -1 ) == ''/'' ) delTree( $file ); else unlink( $file ); } rmdir( $dir ); } ?>


Siempre shell_exec("rm -rf /path/to/folder"); hacer trampa y shell_exec("rm -rf /path/to/folder");