problem mit "Rekursives Löschen von Verzeichnissen"

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

  • problem mit "Rekursives Löschen von Verzeichnissen"

    hallo

    habe ein problem mit einem script weil bei mir register_globals auf on steht gibt es für das script eine andere lösung.

    ich gedacht das ich ganz schlau bin und habe mir einen klassischen php code für das "Rekursives Löschen von Verzeichnissen" gehollt aber da bekomm ich eine fehlermeldung obwohl das so laut PHP gehen soll.
    bekomme diese fehler meldung :

    Warning: is_dir() [function.is-dir]: SAFE MODE Restriction in effect. The script whose uid is 682 is not allowed to access / owned by uid 0 in /home/www/web22/html/member/recrmdir.inc.php on line 12
    (und zeile 12 ist if (!is_dir ($path)) { )


    damit rufe ich die datei auf:
    PHP-Code:
    <?php
        
    // importiere die Datei mit der Funktion
        
    require 'recrmdir.inc.php';
        
        
    // loesche das Verzeichnis /user/test_verzeichnis
        
    $res rec_rmdir ('./user/$u->nic');
        
    // wurde das Verzeichnis korrekt gelöscht
        
    switch ($res) {
          case 
    0:
            
    // das Verzeichnis wurde korrekt gelöscht
            
    break;
          case -
    1:
            
    // das war kein Verzeichnis
            
    break;
          case -
    2:
            
    // ein Fehler ist aufgetreten
            
    break;
          case -
    3:
            
    // die Funktion ist über einen Dateityp gestolpert, den sie nicht kennt
            
    break;
          default:
            
    // die Funktion hat irgend etwas zurückgegeben, was sie eigentlich nicht sollte
            
    break;
        }
    ?>
    das ist die datei mit der ich verzeichnisse löschen möchte
    PHP-Code:
    <?php

    // rec_rmdir - loesche ein Verzeichnis rekursiv
    // Rueckgabewerte:
    //   0  - alles ok
    //   -1 - kein Verzeichnis
    //   -2 - Fehler beim Loeschen
    //   -3 - Ein Eintrag eines Verzeichnisses war keine Datei und kein Verzeichnis und
    //        kein Link
    function rec_rmdir ($path) {
        
    // schau' nach, ob das ueberhaupt ein Verzeichnis ist
        
    if (!is_dir ($path)) {
            return -
    1;
        }
        
    // oeffne das Verzeichnis
        
    $dir = @opendir ($path);
        
        
    // Fehler?
        
    if (!$dir) {
            return -
    2;
        }
        
        
    // gehe durch das Verzeichnis
        
    while ($entry = @readdir($dir)) {
            
    // wenn der Eintrag das aktuelle Verzeichnis oder das Elternverzeichnis
            // ist, ignoriere es
            
    if ($entry == '.' || $entry == '..') continue;
            
    // wenn der Eintrag ein Verzeichnis ist, dann 
            
    if (is_dir ($path.'/'.$entry)) {
                
    // rufe mich selbst auf
                
    $res rec_rmdir ($path.'/'.$entry);
                
    // wenn ein Fehler aufgetreten ist
                
    if ($res == -1) { // dies duerfte gar nicht passieren
                    
    @closedir ($dir); // Verzeichnis schliessen
                    
    return -2// normalen Fehler melden
                
    } else if ($res == -2) { // Fehler?
                    
    @closedir ($dir); // Verzeichnis schliessen
                    
    return -2// Fehler weitergeben
                
    } else if ($res == -3) { // nicht unterstuetzer Dateityp?
                    
    @closedir ($dir); // Verzeichnis schliessen
                    
    return -3// Fehler weitergeben
                
    } else if ($res != 0) { // das duerfe auch nicht passieren...
                    
    @closedir ($dir); // Verzeichnis schliessen
                    
    return -2// Fehler zurueck
                
    }
            } else if (
    is_file ($path.'/'.$entry) || is_link ($path.'/'.$entry)) {
                
    // ansonsten loesche diese Datei / diesen Link
                
    $res = @unlink ($path.'/'.$entry);
                
    // Fehler?
                
    if (!$res) {
                    @
    closedir ($dir); // Verzeichnis schliessen
                    
    return -2// melde ihn
                
    }
            } else {
                
    // ein nicht unterstuetzer Dateityp
                
    @closedir ($dir); // Verzeichnis schliessen
                
    return -3// tut mir schrecklich leid...
            
    }
        }
        
        
    // schliesse nun das Verzeichnis
        
    @closedir ($dir);
        
        
    // versuche nun, das Verzeichnis zu loeschen
        
    $res = @rmdir ($path);
        
        
    // gab's einen Fehler?
        
    if (!$res) {
            return -
    2// melde ihn
        
    }
        
        
    // alles ok
        
    return 0;
    }

    ?>
    gruß angie

  • #2
    ich glaub nicht, dass du ein Problem mit "register globals" hast, sondern vielmehr mit dem Save-mode. aber da kannst du sicher mal nach suchen...

    Kommentar


    • #3
      hi ,

      ja stimmt ist weil save_mode on ist.

      wie kann ich das den anstellen das ich verzeichnisse erstellen lassen kann von usern und die auch wieder löschen , obwohl save_mode auf on steht.

      wen ich ein verzeichniss erstelle mit :
      mkdir("Name_des_Ordners",CHMOD);
      macht er es aber ich bekomme kein zugrief wegen save_mode
      und löschen geht gar nicht.

      das muß doch gehen

      gruß angie

      Kommentar

      Lädt...
      X