Start · Sprachen · PHP · Referenz · disk_total_space

disk_total_space

Funktion

Gibt die Gesamtgröße des Dateisystems oder der Partition zurück, auf der das angegebene Verzeichnis liegt, in Bytes.

seit PHP 4.1.0 Kategorie: io

Signatur

disk_total_space(string $directory): float|false

Beschreibung

disk_total_space() ermittelt die gesamte Kapazität des Dateisystems, auf dem sich das übergebene Verzeichnis befindet. Der Rückgabewert ist eine Gleitkommazahl in Bytes. Diese Funktion ist nützlich, um beispielsweise Speicherlimits zu prüfen, Fortschrittsanzeigen für Dateioperationen zu erstellen oder Systemstatistiken zu erfassen.

Im Gegensatz zu disk_free_space() gibt diese Funktion nicht den verfügbaren, sondern den gesamten Speicherplatz der Partition zurück. Beide Funktionen lassen sich kombinieren, um den prozentualen Füllstand eines Datenträgers zu berechnen.

Unter Windows kann als Argument neben einem Verzeichnispfad auch direkt ein Laufwerksbuchstabe wie C: oder C:\ übergeben werden. Unter Unix/Linux wird ein gültiger Verzeichnispfad benötigt, z. B. / für die Root-Partition.

Die Funktion gibt false zurück, wenn das Verzeichnis nicht existiert oder nicht zugänglich ist. Da der Rückgabewert sehr groß werden kann (Terabyte-Bereiche), wird intern float anstatt int verwendet, um Überläufe zu vermeiden.

Parameter

Name Typ Default Beschreibung
$directory Pflicht string Pfad zu einem Verzeichnis oder (unter Windows) Laufwerksbuchstabe, z. B. /var/www oder C:\. Gibt die Partition an, für die der Gesamtspeicher ermittelt werden soll.

Rückgabewert

Typ
float|false
Beschreibung
Die Gesamtgröße des Dateisystems in Bytes als float. Gibt false zurück, wenn das Verzeichnis nicht existiert oder kein Zugriff möglich ist.

Beispiele

Gesamtgröße der Root-Partition ausgeben

<?php
$total = disk_total_space('/');

if ($total === false) {
    echo 'Fehler: Verzeichnis nicht zugänglich.';
} else {
    // Umrechnung in Gigabyte
    $totalGB = round($total / 1024 / 1024 / 1024, 2);
    echo 'Gesamtgröße der Partition: ' . $totalGB . ' GB';
}
Gesamtgröße der Partition: 476.84 GB

Füllstand einer Partition in Prozent berechnen

<?php
$directory = '/var/www';

$total = disk_total_space($directory);
$free  = disk_free_space($directory);

if ($total === false || $free === false) {
    echo 'Fehler beim Abrufen der Partitionsinformationen.';
} else {
    $used       = $total - $free;
    $usedPercent = round(($used / $total) * 100, 2);

    echo 'Gesamtspeicher : ' . round($total / 1073741824, 2) . ' GB' . PHP_EOL;
    echo 'Belegt         : ' . round($used  / 1073741824, 2) . ' GB' . PHP_EOL;
    echo 'Frei           : ' . round($free  / 1073741824, 2) . ' GB' . PHP_EOL;
    echo 'Auslastung     : ' . $usedPercent . ' %';
}
Gesamtspeicher : 476.84 GB Belegt : 210.53 GB Frei : 266.31 GB Auslastung : 44.15 %

// Wichtig · Fallstricke

Sicherheit: Wenn der Verzeichnispfad aus Benutzereingaben stammt, muss dieser unbedingt validiert und bereinigt werden, um Directory-Traversal-Angriffe zu verhindern. Verwende niemals ungefiltertes Benutzereingaben als Argument.

Berechtigungen: Das PHP-Skript muss Lesezugriff auf das angegebene Verzeichnis besitzen. In Umgebungen mit restriktiven open_basedir-Einstellungen kann die Funktion fehlschlagen oder false zurückgeben.

Plattformunterschiede: Unter Windows können Laufwerksbuchstaben wie C: direkt übergeben werden. Unter Unix/Linux muss ein gültiger Verzeichnispfad angegeben werden; ein nicht existierendes Verzeichnis führt zu false.