PHP Conference Japan 2024

disk_free_space

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

disk_free_space返回文件系统或磁盘分区上的可用空间

描述

disk_free_space(字符串 $directory): 浮点数|false

给定一个包含目录的字符串,此函数将返回相应文件系统或磁盘分区上可用的字节数。

参数

directory

文件系统或磁盘分区的目录。

注意:

如果给定文件名而不是目录,则函数的行为未定义,并且可能在不同的操作系统和 PHP 版本之间有所不同。

返回值

返回可用字节数(作为浮点数),如果失败则返回 false

示例

示例 #1 disk_free_space() 示例

<?php
// $df 包含“/”上可用的字节数
$df = disk_free_space("/");

// 在 Windows 上:
$df_c = disk_free_space("C:");
$df_d = disk_free_space("D:");
?>

注释

注意: 此函数不适用于 远程文件,因为要检查的文件必须可以通过服务器的文件系统访问。

参见

添加注释

用户贡献的注释 7 条注释

66
wiede at gmx dot net
13 年前
转换可以在不使用循环的情况下完成

<?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 />';
?>
33
匿名
10 年前
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );

您错过了 TB 之后的 PB(拍字节)

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

应该像

'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'
17
sam
15 年前
不错,但请注意前缀。

SI 指定小写“k”作为 1'000 前缀。
使用大写“K”作为二进制前缀没有意义,
而 SI 中的十进制兆(M 及其后续)前缀是大写。
此外,几年来一直存在真正的二进制前缀。

以(最新且推荐的)“IEC”方式执行

KB 是十进制计算的;10 的幂(每个 1000 字节)
KiB 是二进制计算的;2 的幂(每个 1024 字节)。
MB、MiB 等也是如此…

随意阅读
http://en.wikipedia.org/wiki/Binary_prefix
10
Nitrogen
17 年前
另一种将字节转换为人类可读大小的简单方法是

<?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");
}
?>

它只是获取 $Bytes 并将其除以 1024 字节,直到它不再大于或等于 1024,同时它增加 $Index 以分配哪个后缀属于返回(在末尾添加“bytes”以节省一些空间)。
您可以轻松地对其进行修改以使其更短,但我使其更清晰。

Nitrogen。
8
root at mantoru dot de
16 年前
请注意,disk_free_space() 会执行 open_basedir 检查。
0
Jawira Portugal
2 年前
这尚未记录。
如果 $directory 无效,则 disk_free_space() 将返回 false 并还会抛出警告:“disk_free_space(): No such file or directory”
-1
somedude
8 年前
关于 Linux 文件系统,我将指出此函数返回当前卷或挂载点中可用的空间,而不是物理磁盘的总空间。也就是说,在此函数用于“/root”卷上时,它显示的是 /root 中的可用空间,这与 /home 等不同。
To Top