369 Stimmen

Löschen aller Dateien aus einem Ordner mit PHP?

Ich hatte zum Beispiel einen Ordner mit dem Namen "Temp" und wollte alle Dateien aus diesem Ordner mit PHP löschen oder leeren. Kann ich das tun?

17voto

Haim Evgi Punkte 119384
$dir = 'your/directory/';
foreach(glob($dir.'*.*') as $v){
    unlink($v);
}

12voto

Dario Corno Punkte 954

Angenommen, Sie haben einen Ordner mit VIELEN Dateien, dann ist das Lesen aller Dateien und das anschließende Löschen in zwei Schritten nicht so leistungsstark. Ich glaube, die beste Methode zum Löschen von Dateien ist die Verwendung eines Systembefehls.

Zum Beispiel verwende ich unter Linux :

exec('rm -f '. $absolutePathToFolder .'*');

Oder so, wenn Sie eine rekursive Löschung wünschen, ohne eine rekursive Funktion schreiben zu müssen

exec('rm -f -r '. $absolutePathToFolder .'*');

die gleichen Befehle gibt es für jedes von PHP unterstützte Betriebssystem. Denken Sie daran, dass dies ein PERFORMER Weg ist, Dateien zu löschen. $absolutePathToFolder MUSS überprüft und gesichert werden, bevor dieser Code ausgeführt wird, und die Berechtigungen müssen erteilt werden.

11voto

StampedeXV Punkte 2655

見る readdir y entkoppeln .

<?php
    if ($handle = opendir('/path/to/files'))
    {
        echo "Directory handle: $handle\n";
        echo "Files:\n";

        while (false !== ($file = readdir($handle)))
        {
            if( is_file($file) )
            {
                unlink($file);
            }
        }
        closedir($handle);
    }
?>

10voto

JoyGuru Punkte 1665

Der einfache und beste Weg, alle Dateien aus einem Ordner in PHP zu löschen

$files = glob('my_folder/*'); //get all file names
foreach($files as $file){
    if(is_file($file))
    unlink($file); //delete file
}

Ich habe den Quellcode von hier - http://www.codexworld.com/delete-all-files-from-folder-using-php/

5voto

Tofeeq Punkte 2303

Die Funktion unlinkr löscht rekursiv alle Ordner und Dateien im angegebenen Pfad, wobei sie sicherstellt, dass das Skript selbst nicht gelöscht wird.

function unlinkr($dir, $pattern = "*") {
    // find all files and folders matching pattern
    $files = glob($dir . "/$pattern"); 

    //interate thorugh the files and folders
    foreach($files as $file){ 
    //if it is a directory then re-call unlinkr function to delete files inside this directory     
        if (is_dir($file) and !in_array($file, array('..', '.')))  {
            echo "<p>opening directory $file </p>";
            unlinkr($file, $pattern);
            //remove the directory itself
            echo "<p> deleting directory $file </p>";
            rmdir($file);
        } else if(is_file($file) and ($file != __FILE__)) {
            // make sure you don't delete the current script
            echo "<p>deleting file $file </p>";
            unlink($file); 
        }
    }
}

Wenn Sie alle Dateien und Ordner löschen wollen, in denen Sie dieses Skript platzieren, rufen Sie es wie folgt auf

//get current working directory
$dir = getcwd();
unlinkr($dir);

Wenn Sie nur die php-Dateien löschen wollen, rufen Sie es wie folgt auf

unlinkr($dir, "*.php");

Sie können auch jeden anderen Pfad zum Löschen der Dateien verwenden

unlinkr("/home/user/temp");

Dadurch werden alle Dateien im Verzeichnis home/user/temp gelöscht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X