Ankündigung

Einklappen
Keine Ankündigung bisher.

Ordner mit Unterverzeichnis löschen

Einklappen

Neue Werbung 2019

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

  • Ordner mit Unterverzeichnis löschen

    Hallo,

    ich habe mir im großen und ganzen mir angewöhnt alles selbst zu scripten.
    Abgucken von anderen Scripts tue ich selkten und kopieren zu 99% erstrecht nicht.

    Deswegen würde ich darum bitten nicht auf fertige Scripts im Internet zu verweisen. Danke im Vorraus

    Nun zum Problem:
    Ich bekomme folgende Fehlermeldung:
    unlink(root/test/testle) [<a href='function.unlink'>function.unlink</a>]: No such file or directory
    Typ : 2
    dh. das unlink keine Ordner löschen kann, soll es ja auch garnicht.

    Da das folgende Script allerdings trotzdem alles ausführt hab ich anscheinend eine wiederholung

    _____________________________________
    Nun zum Script (ausschnitt)
    ich lasse mir alle Datei eines Ordners ausgeben, und in dem zusammen hang erstelle ich eine Tabelle auch mit Löschbutton und richtigem link:

    PHP-Code:
    function loeschend($loeschend){
    echo
    '<form action="'.$_SERVER['REQUEST_URI'].'" method="post"><input name="loeschen" type="hidden" value="'.$loeschend.'" /><input type="submit" value="Löschen"></form>';

    In $löschend steht der relative pfad vom aktuellen pfad/datei also das stimmt schon (glaub ich)

    weiterhin wenn man mal auf löschen geklickt hat kommt das:
    PHP-Code:
    if(isset($_POST['loeschen'])){ 
     if(
    $DEFAULT_DIRECTORY!="root/" AND !strpos($dir_absolute$DEFAULT_DIRECTORY) OR strpos($dir_absolute"..")){
      echo
    'Sie haben nicht die nötiogen Rechte!';
      }
      else{ 
       echo 
    $_POST['loeschen'];
       if(
    is_dir($_POST['loeschen']) AND $_POST['loeschen']!="." AND $_POST['loeschen']!=".."){ 
      
    del("",$_POST['loeschen']); echo'Verzeichnis wurde gelöscht<br>';}
       if(!
    is_dir($_POST['loeschen']) AND $_POST['loeschen']!="." AND $_POST['loeschen']!=".."){ 
       
    unlink($_POST['loeschen']);
       echo
    '<font size="-1">Datei '.$_POST['loeschen'].' gelöscht. <br> Bitte Seite aktualisieren! <\font>';
      }
     }

    Zum guten schluss die Funktion falls unterverzeichnise vorhanden sein sollten bis in unendliche tiefe:

    PHP-Code:
    function del($Pfad$Datei){
     
    $Pfad $Pfad.$Datei.'/';
     if(
    is_dir($Pfad) AND $Pfad !="." AND $Pfad !=".."){
      
    $handle=opendir ($Pfad);
      while (
    false !== ($file readdir($handle))) {
       if(
    is_dir($Pfad.$file) AND $file !="." AND $file !=".."del($Pfad$file);
       if(!
    is_dir($Pfad.$file) AND $file !="." AND $file !=".."unlink($Pfad.$file);
      }
     
    closedir($handle);
     
    rmdir("$Pfad");
     }

    Nochmal zur wiederholung; das löschen ansich mit unterordner ect funktioniert nur die Fehlermeldung stört halt!

    Danke im vorraus,
    und Entschuldigung falls ich etwas dumme Fragen stellen sollte, bzw die Fehler so offensichtlich einfach sind.
    Wer Fehler sucht wird immer welche finden und manche motzen einfach nur so

  • #2
    ich glaube der probiert dir ein verzeichnis zu löschen das nicht vorhanden ist "No such file or directory"

    Kommentar


    • #3
      Zitat:
      unlink(root/test/testle) [<a href='function.unlink'>function.unlink</a>]: No such file or directory
      Typ : 2
      dh. das unlink keine Ordner löschen kann, soll es ja auch garnicht.
      also unlink versucht einen Ordner zu löschen, deshlab get das nicht.
      Also hab ich irgend wo eine Überschneidung/eine Wiederhokung oder so...
      nur wo?
      Wer Fehler sucht wird immer welche finden und manche motzen einfach nur so

      Kommentar


      • #4
        PHP-Code:
        while (false !== 
        was bedeutet denn !==

        Kommentar


        • #5
          Warum ruft du die Funktion ueberhaupt auf einen Ordner auf?

          Edit: === bzw. !== testet zusaetzlich auf den Variablentyp (String, Int, Bool, ..)
          "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

          Kommentar


          • #6
            Ich kann dir nicht sagen, wo genau der Fehler ist. Aber ich finde, du gehst die Sache sehr kompliziert an. Ich würde die Funktion del() folgendermassen erstellen:
            PHP-Code:
            function del($Pfad$Datei){
                if (
            $Datei == "." OR $Datei != ".."){
                    return 
            false;
                }
                
            $Pfad "$Pfad/$Datei";
                if (
            is_dir($Pfad)){
                    
            $handle opendir ($Pfad);
                    while (
            $file readdir($handle)) {    
                        
            del($Pfad$file);
                    }
                    
            closedir($handle);
                    return 
            rmdir($Pfad);
                }
                else{
                    return 
            unlink($Pfad);
                }

            Dann kannst du auf all die Fallunterscheidungen vor dem Aufruf verzichten, da die Funktion sowohl mit Dateien, als auch mit Verzeichnissen umgehen kann.
            Gruss
            L

            Kommentar


            • #7
              Warum ruft du die Funktion ueberhaupt auf einen Ordner auf?
              Wie meisnt du das?
              Ich lass mir den ordnerinhalt ausgeben und mache zu jedem inhalt einen lösch button.

              Damit Ordner nicht so einfach wie Datein löschen kann,
              muss man die Ordnerleeren und dann löschen.

              Und das über mehere Ebenen.

              Oder habe ich irgend wo einen denk Fehler?

              !==
              ist doch richtg oder nicht?

              ________________
              Edit: gerade erst gelesen;

              Deine Funktion Probiere ich gerne aus. Hast recht es geht viel einfacher.
              Danke schonmal für den Beitrag.

              return unlink($Pfad);

              Führt er das dann noch aus?

              rein theoretisch nur so zum verständnis; müsste doch das gleiche sein wie unlink($Pfad); und dann return ODER?
              Wer Fehler sucht wird immer welche finden und manche motzen einfach nur so

              Kommentar


              • #8
                Zitat von AllOnline Beitrag anzeigen
                rein theoretisch nur so zum verständnis; müsste doch das gleiche sein wie unlink($Pfad); und dann return ODER?
                Fast, genauer
                PHP-Code:
                $ret unlink($Pfad);
                return 
                $ret
                Gruss
                L

                Kommentar


                • #9
                  ja warum muss ich mit return überhaupt was übergeben?
                  Wann genau führt er das dann aus?

                  Muss mich anscheinend mal mit return besser beschäftigen!

                  Hab das Script mal ausprobiert;
                  jetzt führt er garnichts mehr aus

                  Nur die Ausgabe "Verzeichnis.. wurde gelöscht"
                  Wer Fehler sucht wird immer welche finden und manche motzen einfach nur so

                  Kommentar


                  • #10
                    Du kannst die returns auch weglassen (ausser dem ersten, dort geht es aber auch ohne Wert). Da die Rückgabewerte sowieso nicht abgefragt werden, ist das wahrscheinlich sinnvoller.
                    Gruss
                    L

                    Kommentar


                    • #11
                      Zitat von Chriz Beitrag anzeigen
                      Edit: === bzw. !== testet zusaetzlich auf den Variablentyp (String, Int, Bool, ..)
                      thx Chriz, ich war bisher der auffassung dass es bei php keine "richtigen" datentypen gibt und deshalb war mir ne identitätsprüfung immer suspekt. wahrscheinlich denke ich zu wenig weil eine "sichtbare" deklaration fehlt. wieder was gelernt.

                      sry @ AllOnline für den missbrauch deines threads

                      Kommentar


                      • #12
                        kein Problem ich lerne ja auch dazu!

                        Nur wie gesagt, mit der vorgestellten Funktion macht er leider garncihts, weder Datein in Ordnern noch die Ordner zu löschen!

                        Hab den Fehler glaub ich gefunden:
                        PHP-Code:
                         if ($Datei == "." OR $Datei != ".."){ 
                        Dennoch macht er nicht +Fehölermeldung:

                        Seite : /index.php?S=7&N=8&sort=filename&ordner=/home/www/web7/html/root/test/.. Datei : /home/www/web7/html/Admin/Ordner.php (Zeile : 34) Meldung : unlink() [function.unlink]: SAFE MODE Restriction in effect. The script whose uid is 653 is not allowed to access /root owned by uid 0 Typ : 2
                        Wer Fehler sucht wird immer welche finden und manche motzen einfach nur so

                        Kommentar


                        • #13
                          Ist halt noch ein Fehler drin (am Anfang der Funktion) ....??
                          Gruss
                          L

                          Kommentar


                          • #14
                            Hab das noch mal geändert:
                            PHP-Code:
                             function del($Pfad$Datei){
                                if (
                            $Datei == "." OR $Datei == ".."){
                                    return 
                            false;
                                }
                                
                            $Pfade "$Pfad/$Datei";
                                if (
                            is_dir($Pfade)){
                                    
                            $handle opendir ($Pfade);
                                    while (
                            $file readdir($handle)) {    
                                        
                            del($Pfade$file);
                                    }
                                    
                            closedir($handle);
                                    return 
                            rmdir($Pfad);
                                }
                                else{
                                    return 
                            unlink($Pfad);
                                }

                            Fehler:
                            Seite : /index.php?S=7&N=8
                            Datei : /home/www/web7/html/Admin/Ordner.php (Zeile : 34)
                            Meldung : unlink() [<a href='function.unlink'>function.unlink</a>]: Unable to access
                            Typ : 2
                            Wer Fehler sucht wird immer welche finden und manche motzen einfach nur so

                            Kommentar


                            • #15
                              Offensichtlich ist auf deinem Server SAFE MODE eingeschaltet. Da kannst du vermutlich überhaupt nichts löschen. Da musst du halt mal mit deinem Provider sprechen.
                              Gruss
                              L

                              Kommentar

                              Lädt...
                              X