Ankündigung

Einklappen
Keine Ankündigung bisher.

Löschen von Verzeichnissen mit ihrem Inhalten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Löschen von Verzeichnissen mit ihrem Inhalten

    Ich möchte Verzeichnisse im Server löschen. Allerdings erscheinen diese Fehlöermeldungen:
    Code:
    Warning: opendir(244811200518226): failed to open dir: No such file or directory in /homepages/datei.php on line 33
    
    Warning: readdir(): supplied argument is not a valid Directory resource in /homepages/datei.php on line 35
    
    Warning: closedir(): supplied argument is not a valid Directory resource in /homepages/datei.php on line 49
    
    Warning: rmdir(244811200518226): No such file or directory in /homepages/datei.php on line 51
    Mein Skript sieht wie folgt aus:
    Code:
    $ordner = ($_POST["ordner"]);
    .
    .
    .
    
      function removeRekursiv($dir) 
      { 
        $dp = opendir($dir); 
    
        while($file = readdir($dp)) 
        { 
          $name = $dir . "/" . $file; 
    
          if ($file != "." && $file != "..") 
          { 
            if (is_dir($name)) 
              removeRekursiv ($name); 
            else 
              unlink($name); 
          } 
    
        } 
    
        closedir($dp); 
    
        rmdir($dir); 
      } 
    
      removeRekursiv("$ordner"); 
            echo "<p class='normal'>Datensatz gelöscht";
    Wo ist der Fehler?

  • #2
    Die angegeben Zahlen in den Fehlermeldungen entsprechen der Variable $ordner.
    Tatsächlich existiert dieses verzeichnis mit der Nummer, die in den Fehlermeldungen angegeben ist.

    Kommentar


    • #3
      Zitat von flual2000
      Tatsächlich existiert dieses verzeichnis mit der Nummer, die in den Fehlermeldungen angegeben ist.
      Da glaube ich PHP aber mehr als dir. Vermutlich ein Problem mit relativen/absoluten Pfaden. Ein echo $dir; in der Funktion sollte Klarheit schaffen.

      Richtig debuggen
      1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
      2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
      3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
      4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
      5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
      6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
      7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

      Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.


      Gruß
      phpfan

      Kommentar


      • #4
        Als Tip:
        removeRekursiv("$ordner");

        $ordner ist bereits ein String

        daran wirds aber nicht liegen

        [edit] evl. $dir mit realpath zu einen Vollständigen Pfad wandeln

        Kommentar


        • #5
          Das mit den " sieht man doch immer wieder, keine Ahnung, wieso. Viel interessanter ist doch, dass sich Leute einen Quellcode per Copy/Paste ranholen und dann sofort in einem Forum nachfragen, wenn was nicht funktioniert. Ich liebe diese "Ich will ohne Fleiß den Preis"-Mentalität.

          Gruß
          phpfan

          Kommentar


          • #6
            Re: Löschen von Verzeichnissen mit ihrem Inhalten

            Zitat von flual2000
            Warning: opendir(244811200518226): failed to open dir: No such file or directory in /homepages/datei.php on line 33
            Das sagt doch schon alles.
            Außerdem übergibst du deinem rekursiven Skript immer nur den relativen Ordnernamen zum übergeordneten Ordner. Benötigt würde aber der komplette Ordner-Pfad.

            Beispiel
            - ordnerEbene1
            __- ordnerEbene2

            removeRekursiv("ordnerEbene1")
            __ removeRekursiv("ordnerEbene2");

            So und das stimmt nicht, es muss heißen
            removeRekursiv("ordnerEbene1/ordnerEbene2");

            Abgesehen davon ist dein Denglisch furchtbar, oder fändest du sowas auch schick?: entferneDirectory();
            ...Entweder alles deutsch oder alles englisch, aber kein Mix!

            Kommentar


            • #7
              Re: Löschen von Verzeichnissen mit ihrem Inhalten

              Zitat von Zergling
              Abgesehen davon ist dein Denglisch furchtbar
              Das hat er ja nicht selbst geschrieben.

              Gruß
              phpfan

              Kommentar


              • #8
                Oh stimmt vergessen

                Kommentar

                Lädt...
                X