CoderCruise

disk_free_space

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

disk_free_spaceRetorna o espaço disponível no sistema de arquivos ou partição de disco

Descrição

float disk_free_space ( string $directory )

Dado uma string contendo um diretório, esta função retornará o número de bytes disponíveis no sistema de arquivos ou partição de disco.

Parâmetros

directory

Um diretório do sistema de arquivos ou partição de disco.

Nota:

Dado um nome de arquivo ao invés de um diretório, o comportamento da função não é especificado e pode ser diferente entre sistemas operacionais e versões do PHP.

Valor Retornado

Retorna o número de bytes disponíveis como um float ou FALSE em caso de falha.

Exemplos

Exemplo #1 Exemplo da disk_free_space()

<?php
// $df contém o número de bytes disponíveis em "/"
$df disk_free_space("/");

// No Windows:
$df_c disk_free_space("C:");
$df_d disk_free_space("D:");
?>

Notas

Nota: Esta função não trabalha com arquivos remotos, de forma que o arquivo a ser examinado precisa ser acessível pelo sistema de arquivos do servidor.

Veja Também

  • disk_total_space() - Retorna o tamanho total de um sistema de arquivos ou partição de disco

add a note add a note

User Contributed Notes 6 notes

up
27
wiede at gmx dot net
5 years ago
Transformation is possible WITHOUT using loops:

<?php
    $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 . '<br />';
    echo
sprintf('%1.2f' , $bytes / pow($base,$class)) . ' ' . $si_prefix[$class] . '<br />';
?>
up
15
Anonymous
2 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'
up
9
sam
7 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
up
8
root at mantoru dot de
9 years ago
Note that disk_free_space() does an open_basedir check.
up
0
somedude
1 month 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.
up
0
Nitrogen
9 years ago
Another easy way to convert bytes to human readable sizes would be this:

<?php
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.
To Top