• User

    devi eliminare prima il contenuto delle sottodirectory
    io ho risolto cosi:
    [php]
    function rmfile($nome,$path){
    $MAINPATH="../../../";
    $dirname=$MAINPATH.$path.'/'.$nome;
    $result='Objects removed:\n';

    if (is_dir($dirname)) {

    if (substr($dirname,-1)!='/') {$dirname.='/';}

    $handle = opendir($dirname);
    while (false !== ($file = readdir($handle))) {
    if ($file!='.' && $file!= '..') {
    $per = $dirname.$file;
    if (is_dir($per)) {
    $result.=$this->rmSubs($per);
    }else{
    unlink($per);
    $result.='Rmoved: '.$per.'.\n';
    }
    }
    }
    closedir($handle);
    rmdir($dirname);
    $result.='Removed: '.$dirname.'.\n';
    return $result;
    }else if(is_file($dirname)){
    unlink($dirname);
    return 'Removed: '.$dirname;
    }else{
    return 'error';
    }
    }

    function rmSubs($sub){
    $rsp='Sub-Object Removed:\n';
    if(is_dir($sub)){
    if (substr($sub,-1)!='/') {$sub.='/';}
    $subhand=opendir($sub);

    while(false!==($dir=readdir($subhand))){
    $rep=$sub.$dir;
    if($dir!='.' && $dir!='..'){
    if(is_dir($rep)){
    $rsp.=$this->rmSubs($rep);
    }else{
    unlink($rep);
    $rsp.='removed '.$dir.'.\n';
    }
    }
    }
    closedir($subhand);
    rmdir($sub);
    $rsp.='Removed: '.$sub.'.\n';
    }else{
    return 'error';
    }

    }
    [/php]


  • User

    Grazie mille...però devo sapere la path assoluta giusto?
    E la ottengo in questo modo : $_SERVER["DOCUMENT_ROOT"] ed i permessi li setto a 0777.giusto?


  • User

    no non ti serve la document root tu basta che la variabile $MAINPATH dell'esempio la setti sulla posizione 'root' che scegli...

    esempio la classe per cancellare le directory si trova in canc.php nella cartella sito.it/classes/
    e vuoi cancellare una cartella nel percorso sito.it/cartella/da/cancellare
    setti $MAINPATH='../'


  • Moderatore

    per i chmod si devi settarli 😉


  • User

    se il server è tuo o hai privilegi sufficenti puoi anche ricorrere a comandi sulla shell tramite php


  • User

    vi ringrazio per la risposta, ma vi volevo chiedere in base a questa funzione.

    Nei parametri $nome e $path qui (function rmfile($nome,$path){)

    in nome inserisco il nome della cartella e la path, si
    riferisce all'indirizzo fisico di dove risiede la cartella
    che voglio eliminare.Giusto?

    e poi qui $MAINPATH="../../../"; inserisco la path per arrivare alla
    cartella.Giusto?

    Ho il sito su aruba.it e l'hosting è windows/linux quindi
    l'unica cartella con i permessi per fare cio che voglio è la
    PUBLIC.

    Quindi, ricapitolando, $MAINPATH="../public/"

    function rmfile($chitarra,$strumenti){

    ti descrivo il contenuto, della cartella strumenti:

      • chitarra[INDENT]
    • - tmb(subdirectory)[/INDENT][INDENT][INDENT]
      
    •     - foto1.jpg
      
      • foto2.jpg[/INDENT][/INDENT] [INDENT]
      • web(subdirectory)[/INDENT] [INDENT][INDENT]
      • foto1.jpg
      • foto2.jpg[/INDENT][/INDENT]
      • chitarra.txt
      • batteria[INDENT]
    • - tmb(subdirectory)[/INDENT] [INDENT][INDENT]
      
    •     - foto1.jpg
      
      • foto2.jpg[/INDENT][/INDENT] [INDENT]
      • web(subdirectory)[/INDENT] [INDENT][INDENT]
      • foto1.jpg
      • foto2.jpg[/INDENT][/INDENT]
      • batteria.txt
      • basso[INDENT]
    • - tmb(subdirectory)[/INDENT] [INDENT][INDENT]
      
    •     - foto1.jpg
      
      • foto2.jpg[/INDENT][/INDENT] [INDENT]
      • web(subdirectory)[/INDENT] [INDENT][INDENT]
      • foto1.jpg
      • foto2.jpg[/INDENT][/INDENT]
      • basso.txt
        Mi dite se come ho settato la MAINPATH ed $nome e $path è corretto?

    Grazie mille....molto gentili


  • User

    purtroppo non mi funziona, ho fatto cosi:

    
    $nome = str_replace(" ", "_",$_POST['CartellaStrumento']);
     //echo "Cartella: " . $cartella;
     $path = "../public/strumenti";
     //echo "C: " . $path. "/" . $nome;
      echo "Si";
     function rmfile($nome,$path){
      $MAINPATH="../../";
      $dirname=$MAINPATH.$path.'/'.$nome;
      echo "Dir: " . $dirname;
      //$dirname=$path.'/'.$nome;
      $result='Objects removed:\n';
      
      if (is_dir($dirname)) {
      
       if (substr($dirname,-1)!='/') {
        $dirname.='/';
       }
       $handle = opendir($dirname);
     
       while (false !== ($file = readdir($handle))) {
        if ($file!='.' && $file!= '..') {
         $per = $dirname.$file;
         if (is_dir($per)) {   
          $result.=$this->rmSubs($per);
         }
         else{
          unlink($per);
          $result.='Rmoved: '.$per.'.\n';
         }
        }
       }
       closedir($handle);
       rmdir($dirname);
       $result.='Removed: '.$dirname.'.\n';
       return $result; 
      }
      elseif(is_file($dirname)){
       unlink($dirname);
       return 'Removed: '.$dirname;
      }
      else{
       return 'error';
      }
     }
      
     function rmSubs($sub){
      $rsp='Sub-Object Removed:\n';
      if(is_dir($sub)){
       if (substr($sub,-1)!='/') {
        $sub.='/';
       }
       $subhand=opendir($sub);
      
       while(false!==($dir=readdir($subhand))){
        $rep=$sub.$dir;
        if($dir!='.' && $dir!='..'){
         if(is_dir($rep)){
          $rsp.=$this->rmSubs($rep);
         }
         else{
          unlink($rep);
          $rsp.='removed '.$dir.'.\n';
         }
        }
       }
       closedir($subhand);
       rmdir($sub);
       $rsp.='Removed: '.$sub.'.\n';
      }
      else{
       return 'error';
      }
     } 
     
    
    

    in pratica non mi entra dentro la funzione...potete dirmi per favore come mai e qual'è l'errore?

    Grazie milllllllleeee


  • User

    buon giorno ragazzi, potete dirmi per favore come mai non mi funziona?
    Vi prego...è troppo importante...
    grazie a tutti....


  • User

    Ragazzi, ma non sapete come mai non mi funziona?cos'è che devo guardare?a cosa devo far caso?Vi prego è importante...


  • User

    ci riprovo, scusate la mia ignoranza, ma non ci riesco...vi prego!!!