Zum Inhalt springen

PhP filesize() 2gb Bug


Empfohlene Beiträge

Moin,

in einem meiner aktuellen Projekte will ich dem Benutzer angeben, wie gross eine Datei bzw. eine Sammlung von Dateien ist.

Hierbei bin ich nun leider an das 2gbyte Limit gestossen.

filesize(); verwendet intern wohl nur Integer und kann damit nicht mehr als 2gbyte zurückgeben.

Zwar wird auf php.net einiges an Tips und "beta Patches" geboten um intern zumindest auf Doubles zu kommen und so mehr addressieren zu können, allerdings ist mit das Wort Beta da etwas .. hmm dubios. Auch die Kompilierung mit Largefile Support scheint sehr stark abhängig vom restlichen System zu sein..

Hat da schonmal wer mit diesem Problem zu tun gehabt und eine Lösung zur Hand? Irgendeine andere Idee wie ich an die korrekte Dateigröße kommen könnte, ausser sie komplett einzulesen und dabei die Zeichen zu zählen? :D

Systemumgebung laut phpinfo();:


System 	Linux pandora 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686


PHP Version 5.2.6-1+lenny3


Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny3 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0 

seufzende Grüße

dgr

Edit:

Ah selbst gefunden, dass man ja zumindest in der bash die korrekten werte findet und dann eben mit system(..) arbeiten muss..

nervig, aber dafür auf jedem system möglich :)


/* Quelle: https://debianforum.de/forum/viewtopic.php?f=8&t=82961 */

function get_file_size($file)
{
if(file_exists($file) )
{
$size = system("stat ".$file." | awk '/Size/ { print $2 } '");
return $size;
}
return false;
}
$size = get_file_size($dir.$file);
[/php]

Bearbeitet von dgr243
Link zu diesem Kommentar
Auf anderen Seiten teilen

DAS die Files über PhP angesprochen werden müssen, hat diesen http://forum.fachinformatiker.de/skript-webserverprogrammierung/25377-sicheren-download-realisieren-2.html Grund ;)

Letztliches Problem hinsichtlich der 2gbyte Grenze von filesize(); bleibt ja aber auch dann, wenn der eigentliche Download "normal", die Wiedergabe der Dateiinformationen (mtime(),ctime(),filesize()...) aber eben über PhP realisiert wird.

Der Workaround über den system() Call funktioniert aber einwandfrei :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...