Chcete číst

PHP - smazání adresáře

aneb proč by to mělo jít jednoduše?

Taky se vám občas hryzne FTP a dělá psí kusy, že ne, v žádném případě to nesmažu, co si o mně jako myslíš, blbečku?

Mně se to stalo párkrát (třeba včera při upgradu Symphony CMS) a tak jsem na to už připravený. Domnívám se, že potíž je ve skrytých souborech (kdyžtak mě někdo opravte). UNIX nedovolí smazat neprázdný adresář, musí se nejprve smazat jeho obsah. A pravděpodobně jste všechen nesmazali, ikdyž si to myslíte.

Občas se výborná řešení najdou v komentářích v PHP manuálu (http://php.net/nějaká_funkce). A právě tam jsem našel tento poklad: (mírně upraven)

<?php

function remove_dir($dir)
{
  if (!$dh = @opendir($dir)) return;
  while (false !== ($obj = readdir($dh)))
  {
    if ($obj == '.' || $obj == '..') continue;
    if (!@unlink($dir.'/'.$obj)) remove_dir($dir.'/'.$obj);
  }
  closedir($dh);
  @rmdir($dir);
}

// pouziti:
// remove_dir('name_of_directory');

?>

Zatím mě nezklamal a vždycky všechno poslušně smazal i tam, kde na to byl FTP klient krátký. Tak snad poslouží i vám. ;)

Napište komentář