如何在php中获取目录大小

如何在php中获取目录大小,php,Php,我正在构建一个需要获取目录大小的存储系统如何获取? 我用这个 $file_directory = './directory/path'; $output = exec('du -sk ' . $file_directory); $filesize = trim(str_replace($file_directory, '', $output)) * 1024;$file_directory = './directory/path'; $output = exec('du -sk ' . $fil

我正在构建一个需要获取目录大小的存储系统如何获取? 我用这个

$file_directory = './directory/path';
$output = exec('du -sk ' . $file_directory);
$filesize = trim(str_replace($file_directory, '', $output)) * 1024;$file_directory = './directory/path';
$output = exec('du -sk ' . $file_directory);
$filesize = trim(str_replace($file_directory, '', $output)) * 1024;
但这并没有给我正确的回答。
我想为每个用户提供10GB的存储空间,使用它会对您有用

<?php
    $units = explode(' ', 'B KB MB GB TB PB');
    $SIZE_LIMIT = 5368709120; // 5 GB change it to 10 Gb
    $disk_used = foldersize("/folder/");

    $disk_remaining = $SIZE_LIMIT - $disk_used;

    echo("<html><body>");
    echo('diskspace used: ' . format_size($disk_used) . '<br>');
    echo( 'diskspace left: ' . format_size($disk_remaining) . '<br><hr>');
    echo("</body></html>");


function foldersize($path) {
    $total_size = 0;
    $files = scandir($path);
    $cleanPath = rtrim($path, '/'). '/';

    foreach($files as $t) {
        if ($t<>"." && $t<>"..") {
            $currentFile = $cleanPath . $t;
            if (is_dir($currentFile)) {
                $size = foldersize($currentFile);
                $total_size += $size;
            }
            else {
                $size = filesize($currentFile);
                $total_size += $size;
            }
        }   
    }

    return $total_size;
}


function format_size($size) {
    global $units;

    $mod = 1024;

    for ($i = 0; $size > $mod; $i++) {
        $size /= $mod;
    }

    $endIndex = strpos($size, ".")+3;

    return substr( $size, 0, $endIndex).' '.$units[$i];
}

?>


读这篇嗨,你已经看过了吗?(使用RecusiveDirectoryIterator可以替代du变体)或者在此处查看完整问题和所有答案