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|falseParamètres
La fonction disk_total_space() prend un paramètre obligatoire :
$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 exempleC:\ouC:/.
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 nondisk_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_basedirsont actives, le chemin doit se trouver dans un répertoire autorisé, sinon l'appel échoue. - Fonction associée.
disk_free_space()(et son aliasdiskfreespace()) 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.