PHP disk_free_space 函数
最后修改于 2025 年 4 月 3 日
PHP disk_free_space
函数返回文件系统或磁盘分区的可用空间。它对于监控存储容量很有用。
基本定义
disk_free_space
函数返回相应文件系统或磁盘分区上可用的字节数。它接受一个参数。
语法:disk_free_space(string $directory): float|false
。该函数在失败时返回 false。相关函数是 disk_total_space。
disk_free_space 基本示例
这展示了 disk_free_space
检查空间的简单用法。
basic_disk_free_space.php
<?php declare(strict_types=1); $freeSpace = disk_free_space("/"); echo "Free space on root: " . $freeSpace . " bytes";
这检查根文件系统上的可用空间。结果以字节为单位。您可能需要将其格式化为人类可读的输出。
格式化磁盘空间
此示例将原始字节转换为人类可读的格式。
format_disk_space.php
<?php declare(strict_types=1); function formatBytes(float $bytes, int $precision = 2): string { $units = ['B', 'KB', 'MB', 'GB', 'TB']; $bytes = max($bytes, 0); $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); $pow = min($pow, count($units) - 1); $bytes /= (1 << (10 * $pow)); return round($bytes, $precision) . ' ' . $units[$pow]; } $free = disk_free_space("/"); echo "Free space: " . formatBytes($free);
formatBytes
函数将字节转换为适当的单位。这使得输出更容易阅读和理解。
检查特定目录
您可以检查任何目录的空间,而不仅仅是根文件系统。
specific_directory.php
<?php declare(strict_types=1); $directory = "/var/www"; $freeSpace = disk_free_space($directory); if ($freeSpace === false) { echo "Could not check disk space for $directory"; } else { echo "Free space in $directory: " . $freeSpace . " bytes"; }
这检查 /var/www 目录的空间。请注意处理目录可能不存在或无法访问的错误。
Windows 驱动器示例
该函数也适用于 Windows 驱动器盘符。
windows_drive.php
<?php declare(strict_types=1); $drive = "C:"; $freeSpace = disk_free_space($drive); echo "Free space on $drive: " . number_format($freeSpace) . " bytes";
在 Windows 系统上,您可以通过指定驱动器盘符来检查驱动器空间。number_format
函数使输出更具可读性。
比较可用空间和总空间
此示例显示可用空间和总空间以供比较。
compare_space.php
<?php declare(strict_types=1); function formatBytes(float $bytes): string { if ($bytes >= 1073741824) { return number_format($bytes / 1073741824, 2) . ' GB'; } elseif ($bytes >= 1048576) { return number_format($bytes / 1048576, 2) . ' MB'; } elseif ($bytes >= 1024) { return number_format($bytes / 1024, 2) . ' KB'; } return $bytes . ' bytes'; } $directory = "/"; $free = disk_free_space($directory); $total = disk_total_space($directory); echo "Total space: " . formatBytes($total) . "\n"; echo "Free space: " . formatBytes($free) . "\n"; echo "Used space: " . formatBytes($total - $free);
这通过显示总空间、可用空间和已用空间来提供磁盘使用的完整图片。自定义格式化函数处理不同的尺寸单位。
边缘情况
disk_free_space
有一些重要的边缘情况需要考虑。
edge_cases.php
<?php declare(strict_types=1); // Non-existent directory $result1 = disk_free_space("/nonexistent/path"); // No permissions $result2 = disk_free_space("/root"); var_dump($result1); // bool(false) var_dump($result2); // bool(false) or warning
当函数无法确定可用空间时,它将返回 false。这发生在不存在的路径或权限不足时。始终检查返回值。
最佳实践
- 错误处理: 始终检查 false 返回值。
- 权限: 确保 PHP 可以访问该目录。
- 格式化: 转换字节以获得人类可读的输出。
- 缓存: 不要频繁调用它,因为它会占用大量的文件系统资源。
来源
本教程介绍了 PHP disk_free_space
函数,并提供了实用示例,展示了其在不同场景中的用法。
作者
列出 所有 PHP 文件系统函数。