Überprüfen ob Ordner vorhanden ist.

  • Themenstarter Themenstarter Lukasz
  • Beginndatum Beginndatum
L

Lukasz

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!
 
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.
 
Hallo!
Soweit hat es geklappt, danke.
Jetzt stehe ich vor dem nächsten ähnlichen Problem

PHP:
<?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
 
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...
 
Augen auf!
Da gibts nicht nur ein Größeneinheiten Umrechner, sondern auch genau das, was du suchst ;)

PHP:
<?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("."));
?>
 
@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:
<?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!
 
Zuletzt bearbeitet von einem Moderator:
Zurück