2014-01-29 79 views
1

好吧,所以我有一個PHP文件坐在主要的根,我想獲得在我的服務器上較低的文件夾中的文件的文件大小。PHP無法獲得文件大小

例子:http://website.com/myphpfile.php 試圖訪問:http://website.com/movies/[with一切在]

我不斷收到0或一些隨機號碼,但我不能讓它產生每個文件的大小。

// Opens directory 
$myDirectory = opendir("./movies"); 

// Gets each entry 
while($entryName = readdir($myDirectory)) { 
    $dirArray[] = $entryName; 
} 

我使用的這個片段:

function size_readable($size, $max = null, $system = 'si', $retstring = '%01.2f %s') 
{ 
    // Pick units 
    $systems['si']['prefix'] = array('B', 'K', 'MB', 'GB', 'TB', 'PB'); 
    $systems['si']['size'] = 1000; 
    $systems['bi']['prefix'] = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'); 
    $systems['bi']['size'] = 1024; 
    $sys = isset($systems[$system]) ? $systems[$system] : $systems['si']; 

    // Max unit to display 
    $depth = count($sys['prefix']) - 1; 
    if ($max && false !== $d = array_search($max, $sys['prefix'])) { 
     $depth = $d; 
    } 

    // Loop 
    $i = 0; 
    while ($size >= $sys['size'] && $i < $depth) { 
     $size /= $sys['size']; 
     $i++; 
    } 

    return sprintf($retstring, $size, $sys['prefix'][$i]); 
} 

我的問題是我如何調用這些文件?

我知道這裏是錯誤的,但它應該是什麼?

$thefilesize = size_readable(filesize($entryName)); 

OR

有人能寫/編輯這段代碼來幫助我明白是怎麼回事,並在那裏/什麼它抓住?

+0

你在哪裏打電話給size_readable? $文件的價值是什麼? – Robbert

+0

我在循環中調用size_readable,$ file是空的。我不是故意把它放在那裏。讓我編輯該部分。它應該爲: $ thefilesize = size_readable(filesize($ entryName)); –

回答

3

$ entryName只會引用文件名。如果要引用該文件,則還需要包含該目錄。

$thefilesize = size_readable(filesize($myDirectory .'/' . $entryName)); 
+0

好吧我得到它的工作,但我不得不修改一點。你容忍我後,我需要包括目錄和它所做的文件,但現在它告訴我 filesize()[function.filesize]:stat失敗.....文件 任何文件超過2演出。看着我的代碼,沒有最大的權利,所以爲什麼會錯誤的這些文件? –

+0

從php文檔:注意:因爲PHP的整數類型是有符號的,並且許多平臺使用32位整數,所以對於大於2GB的文件,某些文件系統函數可能會返回意外的結果。 http://www.php.net/manual/en/function.filesize.php – Robbert

+0

有沒有辦法改變它?或者我可以添加什麼來忽略大於2GB的文件? –