PHP doesn’t currently offer a standard function for retrieving the total size of a directory, a task
more often required than retrieving total disk space. And although you could make a system-level call to du using exec() or system(), such functions are often disabled for security reasons. The alternative solution is to write a custom PHP function that is capable of carrying out this task. A recursive function seems particularly well-suited for this task.
function directory_size($directory) {
$directorySize=0;
// Open the directory and read its contents.
if ($dh = @opendir($directory)) {
// Iterate through each directory entry.
while (($filename = readdir ($dh))) {
// Filter out some of the unwanted directory entries.
if ($filename != "." && $filename != "..") {
// File, so determine size and add to total.
if (is_file($directory."/".$filename))
$directorySize += filesize($directory."/".$filename);
// New directory, so initiate recursion. */
if (is_dir($directory."/".$filename))
$directorySize += directory_size($directory."/".$filename);
}
}
}
@closedir($dh);
return $directorySize;
}
Use :
$directory = "/usr/book/chapter10/";
$totalSize = round((directory_size($directory) / 1048576), 2);
printf("Directory %s: %f MB", $directory: ".$totalSize);
Source : Apress Beginning PHP 5 and MySQL 5, From Novice to Professional


