Как я писал ниже, мой web сервер работает на системе FreeBSD.

Обычно я использовал Apache 1.3 из портов, но при работе с ним заметил такую вещь:

Закидываю файл, скажем образ, объемом в 4.33Гб. На самом сервере по FTP он показывает точный размер. А вот апатч показывает, что размер файла всего лишь 322мб. Досада в том, что если файл поставить на закачку, то размер сохранится в 322мб.

По своей неопытности, я полез в гугл. На что тот мне ответил: Update soft!

Хорошо, снес apache 1.3, полез в порты за apache 2.2, установил, прикрутил php и mysql.

Отлично, глюк исчез. Теперь этот же образ можно было скачать в полном его размере. Только одно НО. Веб морда показывала объем файла в 332мб, пустяк вроде бы.

Косяк, что php делает запрос на размер файла, разумеется, что тот ему показывайет в байтах. Т.е 4,32 ГБ это 4 643 160 064 байт. Куда такие цифры?

А проблема заключается в следующем, что я совсем не разбераюсь в PHP, но один знакомый мне помог. И поправил php код веб морды. Теперь можно спокойно идти спать, ну а утром, подкручивать напильником конфиги сервера.

Старый код:

function PSS_F_FILESIZE($PSS_FILESIZE){$PSS_SIZE_KB = 1024;$PSS_SIZE_MB = 1048576;$PSS_SIZE_GB = 1073741824;$PSS_SIZE_TB = 1099511627776;if ($PSS_FILESIZE >= $PSS_SIZE_TB)return number_format($PSS_FILESIZE/$PSS_SIZE_TB, 2, ',', '.')." TBytes";else if ($PSS_FILESIZE >= $PSS_SIZE_GB)return number_format($PSS_FILESIZE/$PSS_SIZE_GB, 2, ',', '.')." GBytes";else if ($PSS_FILESIZE >= $PSS_SIZE_MB)return number_format($PSS_FILESIZE/$PSS_SIZE_MB, 2, ',', '.')." MBytes";else if ($PSS_FILESIZE >= $PSS_SIZE_KB)return number_format($PSS_FILESIZE/$PSS_SIZE_KB, 2, ',', '.')." KBytes";elsereturn number_format($PSS_FILESIZE, 0, ',', '.')." Bytes";}

Исправленный:

function showSize($file){clearstatcache();$size=exec("ls -l {$file} | awk '{print $5}'");if($size=='') {return "неизвестно";}elseif($size<1024) {return $size." б";}elseif($size<1024*1024) {return round($size/1024,2)." Кб";}elseif($size<1024*1024*1024) {return round($size/1024/1024,2)." Мб";}elsereturn round($size/1024/1024/1024,2)." Гб";}