Felix Riesterer: falsche filesize()???

Liebe Spezialisten!

Mein simples Filelisting in PHP gibt mir bei großen Dateien falsche Dateigrößen an. Ein Beispiel: xyz.rar -1378506251 bytes. Dabei ist die Datei 2,7GB groß! Seit wann kann eine Dateigröße negativ sein??? Ich vermute, dass da irgendeine Binär-nach-dezimal-Umwandlung schief gelaufen ist. Hier mein script, das aber eigentlich nicht daran schuld sein sollte...

<?php
$folder="meinVerzeichnis"
include "icon.inc.php"; <-- das is für Filetyp Icons
$open=opendir($folder);
while ($file = readdir($open))
 {
 $bytes = filesize($folder.'/'.$file);
 $realsize = round($bytes/1073741824,2).' GB.';
 if($bytes < 1024) $realsize = $bytes.' bytes.';
 if($bytes > 1024 && $bytes < 1048576) $realsize = round($bytes/1024,2).' KB.';
 if($bytes > 1048576 && $bytes < 1073741824) $realsize = round($bytes/1048576,2).' MB.';
 if($file != "." && $file != "..")
  {
  if(is_dir($folder.'/'.$file) == false)
   {
    $fileicon = pathinfo($file);
    $fileicon = $fileicon["extension"];
    echo '                  <a href="'.$folder.'/'.$file.'">'.icon($fileicon),$file.'</a> '.$realsize.'<br>'.chr(13);
   }
  }
 }
closedir($open);
?>

Wo liegt also der Fehler? Liegt er wirklich in PHP 4.3.4, oder beim Apache 2.0.48 für Windoof, oder muss ich etwas umprogrammieren, damit das tut?

Vielen Dank für euren kompetenten Rat.

Grüße aus Tübingen.

  1. Hallo Felix,

    Mein simples Filelisting in PHP gibt mir bei großen Dateien falsche Dateigrößen an. Ein Beispiel: xyz.rar -1378506251 bytes. Dabei ist die Datei 2,7GB groß!

    Manual lesen hilft:
    <zitat quelle="http://www.php.net/en/filesize">
    Note:  Because PHP's integer type is signed and many platforms use 32bit integers, filesize() may return unexpected results for files which are larger than 2GB. For files between 2GB and 4GB in size this can usually be overcome by using sprintf("%u", filesize($file)).
    </zitat>

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|