Check server space in php

I have a domain name like 'mydomain.com'. I want to check how much space available on server with this domain name with the help of php. Like for our hard drive we use disk_total_space("C:");. Can anyone help me to get the solution.

asked Dec 6, 2012 at 11:44

Depending on the structure of the file system you can use something like the following for Linux hosts:

$df = round(disk_free_space("/var/www") / 1024 / 1024 / 1024);
print("Free space: $df GB");

Or in your case it sounds like you're running on Windows so:

$df = round(disk_free_space("C:") / 1024 / 1024 / 1024);
print("Free space: $df GB");

answered Dec 6, 2012 at 11:49

PeterJPeterJ

3,62423 gold badges51 silver badges67 bronze badges

0

The main function is used to get space available is same as above said. you have to use disk_free_space(). but the different is to know the server path. And put it in braces.

answered Dec 7, 2012 at 9:10

PremPrem

6973 silver badges10 bronze badges

1

use php disk_free_space("/");

it Returns available space on filesystem or disk partition

answered Dec 6, 2012 at 11:48

Not the answer you're looking for? Browse other questions tagged php or ask your own question.

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

disk_free_spaceReturns available space on filesystem or disk partition

Description

disk_free_space(string $directory): float|false

Parameters

directory

A directory of the filesystem or disk partition.

Note:

Given a file name instead of a directory, the behaviour of the function is unspecified and may differ between operating systems and PHP versions.

Return Values

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

Examples

Example #1 disk_free_space() example

// $df contains the number of bytes available on "/"
$df disk_free_space("/");// On Windows:
$df_c disk_free_space("C:");
$df_d disk_free_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.

wiede at gmx dot net

11 years ago

Transformation is possible WITHOUT using loops:

    $bytes = disk_free_space(".");
   
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
   
$base = 1024;
   
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
    echo
$bytes . '
'
;
    echo
sprintf('%1.2f' , $bytes / pow($base,$class)) . ' ' . $si_prefix[$class] . '
'
;
?>

Anonymous

8 years ago

$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );

you are missing the petabyte after terabyte

'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB'

should look like

'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'

sam

13 years ago

Nice, but please be aware of the prefixes.

SI specifies a lower case 'k' as 1'000 prefix.
It doesn't make sense to use an upper case 'K' as binary prefix,
while the decimal Mega (M and following) prefixes in SI are uppercase.
Furthermore, there are REAL binary prefixes since a few years.

Do it the (newest and recommended) "IEC" way:

KB's are calculated decimal; power of 10 (1000 bytes each)
KiB's are calculated binary; power of 2 (1024 bytes each).
The same goes for MB, MiB and so on...

Feel free to read:
http://en.wikipedia.org/wiki/Binary_prefix

Nitrogen

15 years ago

Another easy way to convert bytes to human readable sizes would be this:

function HumanSize($Bytes)
{
 
$Type=array("", "kilo", "mega", "giga", "tera", "peta", "exa", "zetta", "yotta");
 
$Index=0;
  while(
$Bytes>=1024)
  {
   
$Bytes/=1024;
   
$Index++;
  }
  return(
"".$Bytes." ".$Type[$Index]."bytes");
}
?>

It simply takes the $Bytes and divides it by 1024 bytes untill it's no longer over or equal to 1024, meanwhile it increases the $Index to allocate which suffix belongs to the return (adding 'bytes' to the end to save some space).
You can easily modify it so it's shorter, but I made it so it's more clearer.

Nitrogen.

Jawira Portugal

8 months ago

This is not documented yet.
If $directory is invalid, then disk_free_space() will return false and ALSO throw a Warning: "disk_free_space(): No such file or directory"

somedude

5 years ago

With respect to Linux filesystems, I'll point out that this function returns the space available in the current volume or mountpoint, not the total physical disk space.  That is, this function used on the '/root' volume shows the free space in /root, which is different from '/home', and so on.

Matthieu S

5 years ago

On Windows, this also works with distant files, by using their full network path.

For instance, this will give the % of free disk space on the share "dir" from remote host "server" :
$path = "\\\\server\\dir";
echo(
floor(100 * disk_free_space($disk) / disk_total_space($disk)));
?>

It can also work with drive letters mapped to a network path in certain cases.

pavel at sunhater dot com

3 years ago

function size($size, array $options=null) {$o = [
       
'binary' => false,
       
'decimalPlaces' => 2,
       
'decimalSeparator' => '.',
       
'thausandsSeparator' => '',
       
'maxThreshold' => false, // or thresholds key
       
'sufix' => [
           
'thresholds' => ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'],
           
'decimal' => ' {threshold}B',
           
'binary' => ' {threshold}iB'
       
]
    ];

    if (

$options !== null)
       
$o = array_replace_recursive($o, $options);$count = count($o['sufix']['thresholds']);
   
$pow = $o['binary'] ? 1024 : 1000;

    for (

$i = 0; $i < $count; $i++)

        if ((

$size < pow($pow, $i + 1)) ||
            (
$i === $o['maxThreshold']) ||
            (
$i === ($count - 1))
        )
            return
number_format(
                   
$size / pow($pow, $i),
                   
$o['decimalPlaces'],
                   
$o['decimalSeparator'],
                   
$o['thausandsSeparator']
                ) .
str_replace(
                   
'{threshold}',
                   
$o['sufix']['thresholds'][$i],
                   
$o['sufix'][$o['binary'] ? 'binary' : 'decimal']
                );
}
var_dump(size(disk_free_space('/')));
// string(8) "14.63 GB"
var_dump(size(disk_free_space('/'), ['binary' => true]));
// string(9) "13.63 GiB"
var_dump(size(disk_free_space('/'), ['maxThreshold' => 2]));
// string(11) "14631.90 MB"
var_dump(size(disk_free_space('/'), ['binary' => true, 'maxThreshold' => 2]));
// string(12) "13954.07 MiB"?>