W3docs

disk_total_space()

Die PHP-Funktion disk_total_space() gibt die Gesamtgröße eines Dateisystems oder einer Festplattenpartition zurück. Syntax, Parameter und Beispiele.

Einführung in die PHP-Funktion disk_total_space()

Die Funktion disk_total_space() in PHP gibt die Gesamtgröße in Bytes des Dateisystems (oder der Festplattenpartition) zurück, auf dem sich ein angegebenes Verzeichnis befindet. Sie misst nicht die Größe des Verzeichnisses selbst, sondern die Kapazität des zugrunde liegenden Datenträgers. Damit ist sie nützlich für Serveradministratoren und Webentwickler, die die Festplattenkapazität überwachen, Speicher-Dashboards erstellen oder Benutzer warnen möchten, bevor ein Upload eine Partition füllt.

Ein wichtiger Punkt, der Einsteiger häufig verwirrt: Das Argument ist ein beliebiger Pfad auf dem Datenträger – nicht der Gerätepfad des Datenträgers. Die Übergabe von /var/www, /home/user oder einfach / liefert jeweils die Gesamtgröße der Partition, auf der sich diese Pfade befinden. Um herauszufinden, wie viel Platz noch verfügbar ist, kann diese Funktion mit disk_free_space() kombiniert werden — disk_total_space() liefert die Kapazität, disk_free_space() den nicht genutzten Anteil.

Diese Seite behandelt die Syntax, Parameter, Rückgabewerte und praktische Beispiele, einschließlich der Umrechnung von Rohbytes in ein für Menschen lesbares Format und der Berechnung des prozentualen Festplattenverbrauchs.

Syntax

Die Syntax der Funktion disk_total_space() lautet wie folgt:

Die Syntax von PHP disk_total_space()

disk_total_space(string $directory): float|false

Parameter

Die Funktion disk_total_space() erwartet einen erforderlichen Parameter:

  1. $directory: Ein Pfad auf dem Dateisystem, das Sie untersuchen möchten. Jeder gültige Pfad auf dem Datenträger funktioniert – die Funktion löst ihn auf die zugehörige Partition auf. Unter Windows verwenden Sie einen Laufwerkbuchstaben mit abschließendem Schrägstrich, zum Beispiel C:\ oder C:/.

Rückgabewert

Die Funktion gibt die Gesamtzahl der Bytes auf dem Dateisystem als float zurück (ein float wird verwendet, da Datenträger den Bereich eines 32-Bit-Integers überschreiten können). Bei einem Fehler – etwa einem ungültigen Pfad oder einem Berechtigungsfehler – gibt sie false zurück. Da eine gültige Festplattengröße theoretisch mit einem Wert übereinstimmen könnte, den PHP als falsy behandelt, sollte das Ergebnis immer mit dem strikten Vergleich !== false geprüft werden und nicht mit einer losen Wahrheitsprüfung.

Beispiele

Hier sind einige Beispiele zur Verwendung der Funktion disk_total_space():

Beispiel 1: Gesamtgröße eines Dateisystems abrufen

Das folgende Beispiel ruft die Gesamtgröße des Dateisystems /home/ ab:

Gesamtgröße eines Dateisystems in PHP abrufen

echo disk_total_space("/home/");

Die Ausgabe dieses Beispiels ist die Gesamtgröße des Dateisystems in Bytes.

Beispiel 2: Gesamtgröße einer Festplattenpartition abrufen

Das folgende Beispiel ruft die Gesamtgröße der Festplattenpartition /dev/sda1 ab:

Gesamtgröße einer Festplattenpartition in PHP abrufen

echo disk_total_space("/dev/sda1");

Die Ausgabe dieses Beispiels ist die Gesamtgröße der Festplattenpartition in Bytes.

Beispiel 3: Bytes in ein für Menschen lesbares Format umrechnen

Die Funktion gibt rohe Bytes zurück, die schwer lesbar sind. Rechnen Sie das Ergebnis in Gigabytes um und formatieren Sie es mit number_format():

Festplattengröße in ein lesbares Format in PHP umrechnen

$bytes = disk_total_space("/");
if ($bytes !== false) {
    echo number_format($bytes / 1024 / 1024 / 1024, 2) . " GB";
}
// e.g. "465.76 GB"

Für eine Einheit, die automatisch skaliert (KB, MB, GB, TB, …), verwenden Sie eine kleine Hilfsfunktion:

Automatisch skalierender Byte-Formatierer in PHP

function formatBytes(float $bytes, int $precision = 2): string {
    $units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];
    $pow   = $bytes > 0 ? floor(log($bytes, 1024)) : 0;
    $pow   = min($pow, count($units) - 1);
    $bytes /= (1024 ** $pow);
    return round($bytes, $precision) . ' ' . $units[$pow];
}

echo formatBytes(disk_total_space("/")); // e.g. "465.76 GB"

Beispiel 4: Prozentualen Festplattenverbrauch berechnen

Kombinieren Sie disk_total_space() mit disk_free_space(), um anzuzeigen, wie voll ein Datenträger ist — praktisch für Warnmeldungen und Monitoring-Skripte:

Prozentualen Festplattenverbrauch in PHP berechnen

$total = disk_total_space("/");
$free  = disk_free_space("/");

if ($total !== false && $free !== false) {
    $usedPercent = round(($total - $free) / $total * 100, 1);
    echo "Disk used: {$usedPercent}%";
}

Hinweise und Fallstricke

  • Es wird der Datenträger gemessen, nicht das Verzeichnis. Um die Größe eines Ordnerinhalts zu ermitteln, summieren Sie die Dateigrößen (z. B. mit filesize() beim Iterieren) – nicht disk_total_space().
  • Immer auf false prüfen. Ein fehlender Pfad, ein nicht eingehängtes Laufwerk oder unzureichende Berechtigungen lassen den Aufruf fehlschlagen; verwenden Sie !== false.
  • open_basedir / sichere Pfade. Wenn open_basedir-Einschränkungen aktiv sind, muss der Pfad innerhalb eines erlaubten Verzeichnisses liegen, sonst schlägt der Aufruf fehl.
  • Verwandte Funktion. disk_free_space() (und sein Alias diskfreespace()) gibt den verfügbaren Speicherplatz auf demselben Datenträger zurück.

Fazit

Die Funktion disk_total_space() gibt die Gesamtkapazität in Bytes des Dateisystems zurück, das einen gegebenen Pfad enthält. In Kombination mit disk_free_space() lassen sich damit Speicher-Dashboards erstellen, Upload-Limits durchsetzen und Warnmeldungen bei geringem Speicherplatz auslösen. Drei Grundregeln sind dabei zu beachten: Übergeben Sie einen beliebigen Pfad auf dem Zieldatenträger, behandeln Sie den Rückgabewert als float, und schützen Sie sich vor Fehlern mit einer strikten Prüfung auf !== false.

Übungen

Übung
Welche Aussage beschreibt die Funktion disk_total_space() in PHP korrekt?
Welche Aussage beschreibt die Funktion disk_total_space() in PHP korrekt?
Was this page helpful?