PHP 8.4.6 Released!

disk_total_space

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

disk_total_spaceReturns the total size of a filesystem or disk partition

Description

disk_total_space(string $directory): float|false

Given a string containing a directory, this function will return the total number of bytes on the corresponding filesystem or disk partition.

Parameters

directory

A directory of the filesystem or disk partition.

Return Values

Returns the total number of bytes as a float or false on failure.

Examples

Example #1 disk_total_space() example

<?php
// $ds contains the total number of bytes available on "/"
$ds = disk_total_space("/");

// On Windows:
$ds = disk_total_space("C:");
$ds = disk_total_space("D:");
?>

Notes

Note: This function will not work on remote files as the file to be examined must be accessible via the server's filesystem.

See Also

User Contributed Notes

Viitala
17 years ago
Beware of empty files!

<?php

// Wrong
$exp = floor(log($bytes) / log(1024));

//Correct
$exp = $bytes ? floor(log($bytes) / log(1024)) : 0;

?>
tularis at php dot net
17 years ago
For a non-looping way to add symbols to a number of bytes:
<?php
function getSymbolByQuantity($bytes) {
$symbols = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB');
$exp = floor(log($bytes)/log(1024));

return
sprintf('%.2f '.$symbol[$exp], ($bytes/pow(1024, floor($exp))));
}
andudi at gmx dot ch
22 years ago
To find the total size of a file/directory you have to differ two situations:
(on Linux/Unix based systems only!?)

you are interested:
1) in the total size of the files in the dir/subdirs
2) what place on the disk your dir/subdirs/files uses

- 1) and 2) normaly differs, depending on the size of the inodes
- mostly 2) is greater than 1) (in the order of any kB)
- filesize($file) gives 1)
- "du -ab $file" gives 2)

so you have to choose your situation!

on my server I have no rights to use "exec du" in the case of 2), so I use:
$s = stat($file);
$size = $s[11]*$s[12]/8);
whitch is counting the inodes [12] times the size of them in Bits [11]

hopes this helps to count the used disk place in a right way... :-)

Andreas Dick
JulieC
18 years ago
"filesystem or disk partition" does not equal "directory" for Windows. Thanks.
stierguy1 at msn dot com
17 years ago
function roundsize($size){
$i=0;
$iec = array("B", "Kb", "Mb", "Gb", "Tb");
while (($size/1024)>1) {
$size=$size/1024;
$i++;}
return(round($size,1)." ".$iec[$i]);}
To Top