W3docs

disk_total_space()

La fonction disk_total_space() en PHP récupère la taille totale d'un système de fichiers ou d'une partition de disque spécifiée.

Introduction à la fonction PHP disk_total_space()

La fonction disk_total_space() en PHP renvoie la taille totale, en octets, du système de fichiers (ou de la partition de disque) contenant un répertoire donné. Elle ne mesure pas la taille du répertoire lui-même — elle indique la capacité du volume sous-jacent. Cela la rend utile pour les administrateurs de serveurs et les développeurs web qui souhaitent surveiller la capacité du disque, créer des tableaux de bord de stockage ou avertir les utilisateurs avant qu'un téléversement ne remplisse une partition.

Un point clé qui déroute souvent les débutants : l'argument est n'importe quel chemin sur le volume, et non le nœud de périphérique du volume. Passer /var/www, /home/user, ou simplement / renvoie tous la taille totale de la partition sur laquelle ces chemins résident. Pour savoir combien d'espace est encore disponible, associez cette fonction à disk_free_space()disk_total_space() donne la capacité et disk_free_space() donne la portion inutilisée.

Cette page couvre la syntaxe, les paramètres, la valeur de retour et des exemples pratiques, notamment comment convertir des octets bruts en format lisible par l'homme et comment calculer le pourcentage d'utilisation du disque.

Syntaxe

La syntaxe de la fonction disk_total_space() est la suivante :

La syntaxe de PHP disk_total_space()

disk_total_space(string $directory): float|false

Paramètres

La fonction disk_total_space() prend un paramètre obligatoire :

  1. $directory : Un chemin situé sur le système de fichiers que vous souhaitez inspecter. N'importe quel chemin valide sur le volume fonctionne — la fonction le résout vers la partition à laquelle il appartient. Sous Windows, utilisez une lettre de lecteur avec une barre oblique finale, par exemple C:\ ou C:/.

Valeur de retour

La fonction renvoie le nombre total d'octets sur le système de fichiers sous forme de float (un float est utilisé car les volumes peuvent dépasser la plage d'un entier 32 bits). En cas d'échec — par exemple, un chemin invalide ou une erreur de permission — elle renvoie false. Étant donné qu'une taille de disque valide pourrait en théorie coïncider avec une valeur que PHP traite comme fausse, testez toujours le résultat avec la comparaison stricte !== false plutôt qu'une vérification de véracité souple.

Exemples

Voici quelques exemples d'utilisation de la fonction disk_total_space() :

Exemple 1 : Récupérer la taille totale d'un système de fichiers

L'exemple suivant récupère la taille totale du système de fichiers /home/ :

Récupérer la taille totale d'un système de fichiers en PHP

echo disk_total_space("/home/");

La sortie de cet exemple sera la taille totale du système de fichiers en octets.

Exemple 2 : Récupérer la taille totale d'une partition de disque

L'exemple suivant récupère la taille totale de la partition de disque /dev/sda1 :

Récupérer la taille totale d'une partition de disque en PHP

echo disk_total_space("/dev/sda1");

La sortie de cet exemple sera la taille totale de la partition de disque en octets.

Exemple 3 : Convertir des octets en format lisible par l'homme

La fonction renvoie des octets bruts, difficiles à lire. Convertissez le résultat en gigaoctets et formatez-le avec number_format() :

Convertir la taille du disque en format lisible par l'homme en PHP

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

Pour une unité qui s'adapte automatiquement (KB, MB, GB, TB, …), utilisez un petit assistant :

Formateur d'octets à mise à l'échelle automatique en 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"

Exemple 4 : Calculer le pourcentage d'utilisation du disque

Combinez disk_total_space() avec disk_free_space() pour signaler à quel point un volume est plein — pratique pour les alertes et les scripts de surveillance :

Calculer le pourcentage d'utilisation du disque en PHP

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

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

Notes et pièges

  • Elle mesure le volume, pas le répertoire. Pour obtenir la taille du contenu d'un dossier, additionnez les tailles de ses fichiers (par exemple avec filesize() lors d'une itération), et non disk_total_space().
  • Vérifiez toujours false. Un chemin manquant, un lecteur non monté ou des permissions insuffisantes font échouer l'appel ; utilisez !== false.
  • open-basedir / chemins sécurisés. Si les restrictions open_basedir sont actives, le chemin doit se trouver dans un répertoire autorisé, sinon l'appel échoue.
  • Fonction associée. disk_free_space() (et son alias diskfreespace()) renvoie l'espace disponible sur le même volume.

Conclusion

La fonction disk_total_space() indique la capacité totale, en octets, du système de fichiers qui contient un chemin donné. Associée à disk_free_space(), elle vous permet de créer des tableaux de bord de stockage, d'appliquer des limites de téléversement et de déclencher des alertes d'espace insuffisant. Souvenez-vous des trois points essentiels : passez n'importe quel chemin sur le volume cible, traitez la valeur de retour comme un float, et protégez-vous des échecs avec une vérification stricte !== false.

Practice

Pratique
Which statement accurately describes the disk_total_space() function in PHP?
Which statement accurately describes the disk_total_space() function in PHP?
Was this page helpful?