- Home
- Categorie
- Coding e Sistemistica
- PHP
- Funzione elimina dir( cartella) non và..
-
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]
-
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?
-
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='../'
-
per i chmod si devi settarli
-
se il server è tuo o hai privilegi sufficenti puoi anche ricorrere a comandi sulla shell tramite php
-
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?
- basso.txt
Grazie mille....molto gentili
-
-
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
-
buon giorno ragazzi, potete dirmi per favore come mai non mi funziona?
Vi prego...è troppo importante...
grazie a tutti....
-
Ragazzi, ma non sapete come mai non mi funziona?cos'è che devo guardare?a cosa devo far caso?Vi prego è importante...
-
ci riprovo, scusate la mia ignoranza, ma non ci riesco...vi prego!!!