# Überprüfen ob Ordner vorhanden ist.



## Lukasz (14. Januar 2004)

Hallo ich muss überprüfen ob ein Ordner vorhanden ist oder nicht. (Mit Dateien weis ich wie es geht). Aber eben mit einem Ordner nicht.
 

Gruss Lukasz und Danke!


----------



## MiLa (14. Januar 2004)

Du kannst es wie mit Dateien mit der Funktion file_exists() (http://www.php.net/file_exists) lösen...


----------



## Dario Linsky (14. Januar 2004)

Zusätzlich wäre aber noch is_dir sinnvoll, um zu prüfen, ob es auch ein Verzeichnis ist.
Also erst prüfen, ob die Datei existiert und dann, ob es ein Verzeichnis ist.


----------



## Lukasz (16. Januar 2004)

Hallo!
Soweit hat es geklappt, danke.
Jetzt stehe ich vor dem nächsten ähnlichen Problem


```
<?php
$a = filesize("downloads/uploader/zugang");
echo $a;
?>
```
Die größe eines Ordner inkl aller Unterorder möchte ich auslesen, und bekomme 0 Bytes wo eigentlich 1,45 GB hraus kommen müssten.
Würde ich nach downloads/uploader/zugang/a123.zip (einer Datei) suchen, würde es gehen!

Wie löse ich mein Problem? Weil eigentlich jedem User maximal 5 MB speicerplatz lassen möchte, brauche ich eine Lösung dringend.

Danke und ein Gruss!
PS wie runde ich in Bytes in MB ab?
Ich bräuchte einen wert wie ZBsp. 1450,23 MB


----------



## MiLa (16. Januar 2004)

Das ist doch auch richtig, denn Ordner haben keine Größe, weil sie selbst keinen Speicher fressen, so ist die logische Lösung dafür, dass du eine Funktion erstellst, die alle Dateien in dem Ordner ausließt und dabei den Speicher der jeweiligen Datei addiert.
Dabei musst du natürlich drauf achten, dass du rekursiv arbeitest, in dem Fall wo ein Unterordner vorhanden ist.

Die Umrechnungszahl ist 1024...


----------



## F.o.G. (16. Januar 2004)

Zum umrechnen von Bytes in ein geeignetes Format findest du unter http://www.php4u.net in der Codeschnipsel Sektion einen passenden Schnipsel.

Ciao, Jörg


----------



## MiLa (16. Januar 2004)

Augen auf!
Da gibts nicht nur ein Größeneinheiten Umrechner, sondern auch genau das, was du suchst 


```
<?php
function get_size($ordner) {
    $handle = opendir($ordner);
    while ($file = readdir ($handle)) {
        if($file != "." && $file != "..") {
            if(is_dir($ordner."/".$file)) {
                $size = $size + get_size($ordner."/".$file);
                $size = $size + filesize($ordner."/".$file);
            } else {
                $size = $size + filesize($ordner."/".$file);
            }
        }
    }
    closedir($handle);
    return $size;
}
function transform_size($size) {
    return round($size/(1024*1024),2)." MB";
}
echo transform_size(get_size("."));
?>
```


----------



## Lukasz (16. Januar 2004)

@Lars Michelsen und F.o.g
Danke! Das ist genau was ich gesucht habe.
Ich hatte bislang nur einen script über die Server Statistic gefunden:
Wen der nächste das gleiche Problem hat,
So überprüft man den Serverseicherplatz:


```
<?php
$quota="800"; // place for your web in MB
$a = "$adr/h2";
function obsah($adr,&$total,&$dir,&$size){            
  $dp=OpenDir($adr);

  do{
   $itm=ReadDir($dp);
   if (Is_Dir("$adr/$itm")&&($itm!=".")&&($itm!="..")&&($itm!="")){
     obsah("$adr/$itm",$total,$dir,$size);
     $dir++;
   }
   elseif (($itm!=".")&&($itm!="..")&&($itm!="")){
     $size=$size+FileSize("$adr/$itm");
     $total++;
   }
  } while ($itm!=false);

  CloseDir($dp);
}

obsah(".",$total,$dir,$size);
$freeA=BcDIV($size,1024*1024*1024,2);
$freeB=$quota-$freeA;

echo "<FONT FACE=arial SIZE=2>
Belegter Platz: <B>$freeA</B> GB <br>
Noch Verfügbar: <B>$freeB</B> GB <br>
<B>$total</B> Dateien in <B>$dir</B> Ordnern. 
</FONT></CENTER>";
?>
```
Achtet darauf der Script ist auf GB gestzt.
Möchtet ihr MB Ausgeben so müsst ihr folgende Zeile ändern:
$freeA=BcDIV($size,1024*1024*1024,2);
in MB =
$freeA=BcDIV($size,1024*1024,2);
in KB =
$freeA=BcDIV($size,1024,2);

Und den insgeammten Speicher in der Variable $quota="800"; // place for your web nicht vegessen anzugeben.

Gruss Lukasz!


----------

