Jump to content
php.lv forumi

[!]Izdzēst direktoriju ar tās saturu..


raivis

Recommended Posts

Izdzēst direktoriju ar tajā esošiem failiem un direktorijām, neuzskaitot katru failu un direktoriju atsevišķi!?

unlink("data/users/g/gallery/title.txt");
rmdir("data/users/g/gallery/");
unlink("data/users/g/inbox.txt");
unlink("data/users/g/outbox.txt");
unlink("data/users/g/info.txt");
rmdir("data/users/g/");

 

pieņemsim dzēšamā direktorija ir $trash

ar rmdir($trash); nav līdzēts, ja tajā atrodas faili un direktorijas..

Vai vispār tas ir iespējams?

Link to comment
Share on other sites

var. primitīva rekursija:

 function DeleteDir($dir) {
   if ($dh = opendir($dir)) {
       while (($file = readdir($dh)) !== false) {
         if ($file != '.' && $file != '..') {
           if (is_dir($file)) {
             DeleteDir($dir . '/' . $file);
             rmdir($dir) . '/' . $file);
           } else {
             unlink($dir);
           }
       }
       closedir($dh);
   }
 }
 DeleteDir($trash); // atceries, ka jābūt tiesībām to visu dzēst!!!!

Edited by bubu
Link to comment
Share on other sites

iespējams, ja vari palaist ar exec vai tml. rekursīvo delete komandu attiecīgai OS, citādi še tev pseidokodu

function recdel($topdir)
{
$dh=opendir($topdir);
while (($item=readdir($dh)) !== false)
 switch ($item)
 {
  case '.':
  case '..':
    break;
  default:
   @chmod($topdir.$item,0777);//jic
    if (is_dir($topdir.$item))
      recdel($topdir.$item.'/');
    else
      unlink($topdir.$item);
 }//sw
 rmdir($topdir);
}
recdel('/var/www/home/public_html/tmp/'); //attīrāmā un dzēšamā direktorija

Link to comment
Share on other sites

Skripts nenostrādā!?

 

function DeleteDir($dir) {
  if ($dh = opendir($dir)) {
      while (($file = readdir($dh)) !== false) {
        if ($file != '.' && $file != '..') {
          if (is_dir($file)) {
            DeleteDir($dir . '/' . $file);
            rmdir($dir . '/' . $file);
          } else {
            unlink($dir);
          }
      }
      closedir($dh);
  }
}
$trash = "del01/";
DeleteDir($trash); // atceries, ka jābūt tiesībām to visu dzēst!!!!
}

 

Bet šis skripts izdzēš tikai norādītās direktorijas saturu, bet dzēšot direktorijas, izmet error:

function recdel($topdir)
{
$dh=opendir($topdir);
while (($item=readdir($dh)) !== false)
switch ($item)
{
 case '.':
 case '..':
   break;
 default:
  @chmod($topdir.$item,0777);//jic
   if (is_dir($topdir.$item))
     recdel($topdir.$item.'/');
   else
     unlink($topdir.$item);
}//sw
rmdir($topdir);
}
recdel('del01/'); //attīrāmā un dzēšamā direktorija

 

 

Warning: rmdir(del01/13/) [function.rmdir]: Permission denied in c:\wamp\www\projects\delete.php on line 18

 

Warning: rmdir(del01/fa/) [function.rmdir]: Permission denied in c:\wamp\www\projects\delete.php on line 18

 

Warning: rmdir(del01/) [function.rmdir]: Permission denied in c:\wamp\www\projects\delete.php on line 18

 

line 18= rmdir($topdir);

 

rmdir('del01/fa/'); //Bet šādejādi tiek izdzēsta direktorija

 

..tā ka apgalvojums Permission denied nav patiess.

Link to comment
Share on other sites

jic == Just In Case ;)

 

nu mazliet piedomā

Warning: rmdir(del01/fa/) [function.rmdir]: Permission denied in c:\wamp\www\projects\delete.php on line 18

 

un rmdir('del01/fa/'); //Bet šādejādi tiek izdzēsta direktorija

 

kaut kā neštimmējas kopā

Link to comment
Share on other sites

Bet kādēļ, izdzēš tikai direktorijas satura failus, bet ne pašas direktorijas?

un izvada:

 

Warning: rmdir(del01/13/) [function.rmdir]: Permission denied in c:\wamp\www\projects\delete.php on line 18

Warning: rmdir(del01/fa/) [function.rmdir]: Permission denied in c:\wamp\www\projects\delete.php on line 18

Warning: rmdir(del01/) [function.rmdir]: Permission denied in c:\wamp\www\projects\delete.php on line 18

 

function recdel($topdir)
{
$dh=opendir($topdir);
while (($item=readdir($dh)) !== false)
switch ($item)
{
 case '.':
 case '..':
   break;
 default:
  @chmod($topdir.$item,0777);//jic
   if (is_dir($topdir.$item))
     recdel($topdir.$item.'/');
   else
     unlink($topdir.$item);
}//sw
rmdir($topdir);
}
recdel('del01/'); //attīrāmā un dzēšamā direktorija

 

Kur kļūda 18 rindā?: rmdir($topdir);

 

Kaut kas neštimē!..

Link to comment
Share on other sites

Šādejādi nav viss risināts!: rmdir("'".$topdir."'");

 

Warning: rmdir('del01/13/') [function.rmdir]: No such file or directory in c:\wamp\www\projects\delete.php on line 18

Warning: rmdir('del01/fa/') [function.rmdir]: No such file or directory in c:\wamp\www\projects\delete.php on line 18

Warning: rmdir('del01/') [function.rmdir]: No such file or directory in c:\wamp\www\projects\delete.php on line 18

Link to comment
Share on other sites

jaa, maxlinieks gan Tu esi. psc, buutu man te valdiishana kraasas, smailiji un citas fignjas sen buutu atsleegtas. iipashi taadiem kaa Tu.

vai visus skriptus izpildi no viena skatpunkta?

tb mosh Tu venom skriptu laid ejot uz www.blablabla.lv/test.php

bet savu rmdir testee no lokaali palaizhot `php /www/webroot/test.php` ?

anyway, iemeegjini sho f-ju:

 

function recdel($dir){

$dir=escapeshellargs($dir);

exec ("rm -r -- ./$dir"); // ./ tiek pielikts JIC ;> ja nu sagribas / dzeest.

}

Link to comment
Share on other sites

Kur kļūda!?

..piedodiet!- es kļūdu nesaskatu, bet tad kādēļ Warning..

nu ta manējā rmdir(rtrim($topdir,'/')); citādi mūsu māxlinieks neiedomāsies
<?php

function recdel($topdir)

{

$dh=opendir($topdir);

exec("rm -r -- ./$topdir");

while (($item=readdir($dh)) !== false)

switch ($item)

{

case '.':

case '..':

  break;

default:

  @chmod($topdir.$item,0777);//jic

  if (is_dir($topdir.$item)) {

    recdel($topdir.$item.'/');

  } else {

    unlink($topdir.$item);

  }

}//sw

#$topdir=escapeshellarg($topdir); //Warning: rmdir("del01/13/") [function.rmdir]: Invalid argument in c:\wamp\www\projects\delete.php on line 21

rmdir(rtrim($topdir));

}

recdel('del01/'); //attīrāmā un dzēšamā direktorija..

?>

izmet ārā:

Warning: rmdir(del01/13/) [function.rmdir]: Permission denied in c:\wamp\www\projects\delete.php on line 21

Warning: rmdir(del01/fa/) [function.rmdir]: Permission denied in c:\wamp\www\projects\delete.php on line 21

Warning: rmdir(del01/) [function.rmdir]: Permission denied in c:\wamp\www\projects\delete.php on line 21

Link to comment
Share on other sites

Paldies par to pašu!

--

Šāds skripts strādā:

function deldir($dir) {
  $dh=opendir($dir);
  while ($file=readdir($dh)) {
      if($file!="." && $file!="..") {
          $fullpath=$dir."/".$file;
          if(!is_dir($fullpath)) {
              unlink($fullpath);
          } else {
              deldir($fullpath);
          }
      }
  }

  closedir($dh);

  if(rmdir($dir)) {
      return true;
  } else {
      return false;
  }
}
deldir("del01/");

Link to comment
Share on other sites

×
×
  • Create New...