Potrzebuję usunąć folder z zawartością za pomocą PHP. rmdir()
i unlink()
usunąć puste foldery, ale nie można usunąć folderów, które mają zawartość.Jak usunąć folder z zawartością za pomocą PHP
Odpowiedz
Ta funkcja pozwala usunąć dowolny folder (tak długo, jak to jest zapisywalny) i jego plików i podkatalogów.
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;
}
Albo bez rekursji przy użyciu 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;
}
Świetna metoda, człowiek . Używałem bardzo prostego polecenia: Php system ("rm -r RESOURCE_PATH"); ?>, ale niestety niektóre serwery nie zezwalają na polecenie systemowe, więc twoje (wybrałem pierwszy) jest bardzo dobrym i prostym zamiennikiem. Dzięki bracie. –
Czy to też działa dla ścieżek względnych? Powiedzmy, że pełna ścieżka to "/ var/www/html/folder_and_files_to_delete /" Skrypt usuwania znajduje się w "/var/www/html/delete_folders_and_files.php". Czy mogę po prostu użyć "folder_and_files_to_delete" jako ścieżki? – yoano
Jak, najlepsza odpowiedź – mghhgm
Musisz pętli wokół zawartości folderu (w tym zawartość wszelkich podfolderów) i usunąć je najpierw.
Jest to przykład tutaj: http://lixlpixel.org/recursive_function/php/recursive_directory_delete/
Bądź ostrożny z tym !!!
Trzeba będzie usunąć wszystkie pliki rekurencyjnie. Istnieje wiele przykładowe funkcje w komentarzach na stronie rmdir
ręcznej:
Mam nadzieję, że rmdir usunie tylko folder, który nie ma zawartości. jeśli ma zawartość, nie usunie folderu. – Fero
To jest dokładnie w porządku Fero - rmdir nie usunie katalogu z zawartością, dlatego najpierw musisz usunąć jakąś zawartość, jeśli chcesz pozbyć się katalogu (włączając w to zawartość podkatalogów) – Fenton
Nie ma jednej funkcji wbudowanych w PHP, która pozwala na to, musisz napisać własne z rmdir i rozłączyć.
Przykładem (zaczerpnięte z komentarzem na 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);
}
?>
Co to jest GLOB_MARK? – Randell
@Randell: GLOB_MARK - dodaje ukośnik do każdego zwróconego katalogu. –
Oto skrypt, który zrobi to, czego potrzebujesz:
/**
* 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 ([email protected]($dir . '/' . $obj))
{
unlinkRecursive($dir.'/'.$obj, true);
}
}
closedir($dh);
if ($deleteRootToo)
{
@rmdir($dir);
}
return;
}
mam go od php.net i działa .
Być może lepszym rozwiązaniem jest użycie rm
(jeśli jesteś pod Linuksem). byłoby to mniej więcej tak ($root
powinien być zawsze ustawiony na swojej TMP directory
aby zapobiec usuwanie ważnych plików!):
function remove($dir) {
$root = $_SERVER['DOCUMENT_ROOT'].'/tmp/';
if (is_dir($root.$dir)) {
exec('rm -rf '.$root.$dir);
}
}
remove ("/") ... sprawi, że wszyscy będą szczęśliwi :) –
Yikes. Należy unikać poleceń powłoki. – Volomike
USUWANIE PLIKÓW PODOBNYCH W APLIKACJI INTERNETOWEJ MUSI BYĆ UNIKNIONY. PODANIE WZGLĘDNYCH ŚCIEŻEK MOŻE USUNĄĆ WSZYSTKIE PLIKI W SYSTEMIE, JEŚLI UŻYTKOWNIK APLIKACJI MA ZGODĘ. – ArunaFromLK
- 1. Jak rozpakować folder zip za pomocą kodu php
- 2. PHP: Najprostszy sposób na usunięcie folderu (łącznie z jego zawartością)
- 3. usunąć znaki nowego wiersza z pliku txt za pomocą php
- 4. wix - jak usunąć niepusty folder
- 5. Jak odszyfrować cały folder za pomocą tslint
- 6. Jak usunąć folder podczas dezinstalacji?
- 7. Jak utworzyć folder za pomocą szablonu .tt?
- 8. Jak usunąć łączniki za pomocą aktualizacji MySQL?
- 9. Jak usunąć plik z Cloudfiles Rackspace za pomocą api?
- 10. Usunąć za pomocą QueryOver?
- 11. Jak usunąć nadmiarowość za pomocą normalizacji?
- 12. Jak zamienić "\" za pomocą str_replace() w PHP?
- 13. Usuń nazw z XML za pomocą PHP
- 14. Jak przesłać .docx za pomocą Codeigniter? (PHP)
- 15. Otwórz folder w Eksploratorze za pomocą Java
- 16. Jak usunąć całą zawartość folderu za pomocą Ruby-Rails?
- 17. Amazon S3 boto - jak usunąć folder?
- 18. Jak usunąć wiersze za pomocą zewnętrznego łączenia
- 19. Jak usunąć obiekt Json za pomocą Pythona?
- 20. Jak usunąć komentarze za pomocą optymalizatora RequireJS?
- 21. Jak usunąć zawartość elementu za pomocą JQuery?
- 22. jak usunąć element utworzony za pomocą jquery?
- 23. Jak usunąć element za pomocą DOMDocument?
- 24. Jak usunąć rysunek za pomocą przycisku?
- 25. Jak usunąć znacznik HTML za pomocą PHPQuery?
- 26. Jak usunąć tekst Nawias za pomocą JQuery?
- 27. Jak usunąć ostatni DIV za pomocą jQuery?
- 28. Esqueleto: Jak usunąć element za pomocą łączenia
- 29. Jak mogę usunąć zawartość w folderze za pomocą skryptu bash?
- 30. Usunąć/usunąć konfigurację Solr z ZooKeeper za pomocą zkcli?
@@ Maerlyn: I zostały zaksięgowane to pytanie w dniu sie 26, 2009. Duplikat jednej której wspomniano został opublikowany 28 lipca 2010 r. Wierzę, że wiesz co robić TERAZ ... Zanim coś zrobisz, sprawdź raz jeszcze. – Fero