Signatur
Beschreibung
ini_parse_quantity() interpretiert Größenangaben in der PHP-INI-Kurzschreibweise und gibt den entsprechenden Wert in Bytes zurück. Diese Schreibweise kennt man aus Direktiven wie memory_limit, post_max_size oder upload_max_filesize in der php.ini.
Unterstützte Suffixe sind K oder k (Kilobytes, × 1.024), M oder m (Megabytes, × 1.048.576) sowie G oder g (Gigabytes, × 1.073.741.824). Ohne Suffix wird der Wert direkt als Bytes interpretiert.
Die Funktion ist besonders nützlich, wenn man in eigenem Code INI-Werte liest (z. B. via ini_get()) und sie für Vergleiche oder Berechnungen in eine reine Byte-Zahl umrechnen muss – zum Beispiel um zu prüfen, ob eine hochzuladende Datei das Server-Limit überschreitet.
Ungültige Suffixe oder nicht numerische Eingaben lösen einen E_WARNING aus und die Funktion gibt 0 zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $shorthand Pflicht | string | Eine Größenangabe in INI-Kurzschreibweise, z. B. "128M", "2G" oder "512K". Groß-/Kleinschreibung des Suffixes wird ignoriert. |
Rückgabewert
0 zurückgegeben und ein E_WARNING erzeugt.Beispiele
Einfache Umrechnung verschiedener Kurzschreibweisen
<?php
var_dump(ini_parse_quantity('128M')); // 134217728
var_dump(ini_parse_quantity('1G')); // 1073741824
var_dump(ini_parse_quantity('512K')); // 524288
var_dump(ini_parse_quantity('1024')); // 1024 (keine Einheit = Bytes)
var_dump(ini_parse_quantity('2g')); // 2147483648 (Kleinbuchstabe erlaubt)
Upload-Limit gegen Server-Konfiguration prüfen
<?php
// Maximale Upload-Größe aus der php.ini auslesen und in Bytes umrechnen
$maxUpload = ini_parse_quantity(ini_get('upload_max_filesize'));
$maxPost = ini_parse_quantity(ini_get('post_max_size'));
$effectiveLimit = min($maxUpload, $maxPost);
echo 'Effektives Upload-Limit: ' . number_format($effectiveLimit / 1048576, 1) . ' MiB' . PHP_EOL;
// Prüfen ob eine konkrete Dateigröße erlaubt wäre
$fileSize = 50 * 1024 * 1024; // 50 MiB
if ($fileSize > $effectiveLimit) {
echo 'Datei überschreitet das Server-Limit!';
} else {
echo 'Datei liegt innerhalb des Limits.';
}
// Wichtig · Fallstricke
Verhalten bei ungültigen Werten: Wird ein unbekannter Suffix übergeben (z. B. "10T"), gibt die Funktion 0 zurück und erzeugt einen E_WARNING. Eigene Eingaben sollten daher vor der Übergabe validiert werden.
Plattformabhängige Limits: Auf 32-Bit-Systemen kann ein Wert wie "3G" zu einem Integer-Überlauf führen. PHP selbst wird unter diesen Umständen ebenfalls gewarnt – auf modernen 64-Bit-Systemen ist dies kein Problem.
Verfügbarkeit: Die Funktion wurde in PHP 8.2.0 eingeführt. Für ältere PHP-Versionen muss die Umrechnung manuell implementiert werden.