2026, 새로운 도약을 시작합니다.

PHP에서 2GB이상의 파일크기 정확히 얻기

PHP가 제공해주는 filesize()함수는 일부 OS(부호화된 32비트 정수형체계를 이용하는 플랫폼들)에서는 2GB이상 되는 파일의 크기를 정확히 출력해주지 못합니다.
왜냐문 당연히 부호화된 32비트체계에서는 PHP가 다룰수 있는 정수값의 범위가 -2 147 483 647 부터 2 147 483 647 까지로, 2GB이상을 담을수 없기때문입니다.
여러가지 플랫폼에 무관하게 대용량 파일의 크기를 빠르고 쉽게 얻을수 있는 함수를 공개합니다.

    function getFileSize($file) {
        if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
            $size = trim(exec("for %F in (\"" . $file . "\") do @echo %~zF"));
        }
        elseif ((PHP_OS == 'Linux') || (PHP_OS == 'FreeBSD') || (PHP_OS == 'Unix') || (PHP_OS == 'SunOS')) {
            $size = trim(shell_exec("stat -c%s " . escapeshellarg($file)));
        } else {
            $size = filesize($file);
        }
        return $size;
    }

로직은 간단하죠.
콘솔지령으로 파일의 크기를 제한 없이 추출했습니다.

그누보드에서는 게시판의 파일을 다운로드하는데 filesize()함수를 이용하던데, 물론 용량제한으로 2GB이상의 파일을 취급 안 하지만, 확장성을 고려하여 filesize()함수 대신 getFileSize()함수를 이용하는게 더 나은 선택이 아닐가 문의드립니다.
대용량의 파일을 다운로드하고여 사용할때는 퍽 유익하더라구요...

감사합니다.

|

댓글 5개

좋은 정보 고맙습니다.
32bit 운영체제 지원은 기억에서 지우고 있었는데 필요하신분이 계실지도 모르겠네요 ㅎㅎ
file_exists(), function_exists()로 예외처리도 하면 좋을것 같습니다.
쑤꾸웹~~~
캄사합니다~~

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,598
2741 3일 전 조회 123
2740 5일 전 조회 111
2739 1주 전 조회 210
2738 1주 전 조회 218
2737 1주 전 조회 181
2736 2주 전 조회 281
2735 3주 전 조회 285
2734 3주 전 조회 264
2733 1개월 전 조회 266
2732 1개월 전 조회 301
2731 1개월 전 조회 268
2730 1개월 전 조회 227
2729 1개월 전 조회 357
2728 1개월 전 조회 245
2727 1개월 전 조회 422
2726 1개월 전 조회 257
2725 1개월 전 조회 332
2724 1개월 전 조회 361
2723 1개월 전 조회 267
2722 1개월 전 조회 300
2721 1개월 전 조회 212
2720 2개월 전 조회 304
2719 2개월 전 조회 307
2718 2개월 전 조회 202
2717 2개월 전 조회 337
2716 2개월 전 조회 202
2715 2개월 전 조회 312
2714 2개월 전 조회 273
2713 2개월 전 조회 376
2712 2개월 전 조회 289
🐛 버그신고