Der Jan: Dateien aus Verzeichnis löschen - Letzte geht nicht

Hallo liebe Foren-Gemeinde,

ich habe folgende Sachverhaltsproblematik:

Ich will mittels PHP die Dateien eines Ordners löschen und das klappt auch soweit ganz gut:

//Anschließend muss die alte Datei gelöscht werden.
if (!unlink("../Users/".$User.".dat"))
{
    echo "<br>Fehler beim Löschen der Datei";
}

Die Dateien werden widerstandslos gelöscht. aber DIE LETZTE Datei nicht. Ich habe festgestellt, dass es immer die letzt im Alphabeth ist. Also AAA.dat BBB.dat CCC.dat , dann wird CCC.dat nicht gelöscht und es heißt
Permission denied. Diese Datei hat allerdings die selben Zugangsberechtigungen wie die anderen.

Hat jemand ne Idee?

MFG

Der Jan

  1. Hallo Jan,

    ich gehe mal davon aus, dass Du die Dateien per Schleife oder aus einem Array an die öschfunktion weitergibst?
    Hast Du sowohl Schleifenbedingungen und Arrayinhalte mal kontrolliert? Dem Dateisystem ist es ja egal, ob es die letzte Datei ist oder nicht, ich tippe vielmehr auf einen Fehler beim Index und dem daraus resultierenden Dateinamen $user.".dat".

    Gruß
    cheops

    Hallo liebe Foren-Gemeinde,

    ich habe folgende Sachverhaltsproblematik:

    Ich will mittels PHP die Dateien eines Ordners löschen und das klappt auch soweit ganz gut:

    //Anschließend muss die alte Datei gelöscht werden.
    if (!unlink("../Users/".$User.".dat"))
    {
        echo "<br>Fehler beim Löschen der Datei";
    }

    Die Dateien werden widerstandslos gelöscht. aber DIE LETZTE Datei nicht. Ich habe festgestellt, dass es immer die letzt im Alphabeth ist. Also AAA.dat BBB.dat CCC.dat , dann wird CCC.dat nicht gelöscht und es heißt
    Permission denied. Diese Datei hat allerdings die selben Zugangsberechtigungen wie die anderen.

    Hat jemand ne Idee?

    MFG

    Der Jan

  2. Hat sich erledigt ;)

    Der Filestrean wurde nach der letzen Datei nicht geschlossen...

    while($file=readdir($dir))
    {
            if (@filetype($path.$file)!="dir")
     {
      $data = fopen($path."/".$file,"r");
      printLine($data,$file);
      $i++;
     }

    }
    //Dateien schließen, um das Löschen zu ermöglichen
    if(!empty($data))
    {
     fclose($data);
    }

    Is vielleicht hilfreich für User mit ähnlichen probs:)

    MFG
    Der Jan

    1. while($file=readdir($dir))
      {
      if (@filetype($path.$file)!="dir")
      {
        $data = fopen($path."/".$file,"r");
        printLine($data,$file);
        $i++;
      }

      }
      //Dateien schließen, um das Löschen zu ermöglichen
      if(!empty($data))
      {
      fclose($data);
      }

      Hier solltest du besser fclose immer ausführen, wenn du mit der aktuellen Datei fertig bist. Also etwa:

      while($file=readdir($dir))
      {
       if (@filetype($path.$file)!="dir")
       {
        $data = fopen($path."/".$file,"r");
        printLine($data,$file);
        fclose($data);
        $i++;
       }
      }