메뉴 건너뛰기

프로그램언어

조회 수 25515 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

PHP 에서 폴더(디렉토리)내에 특정 파일만 지우는 걸 해야 할 일이 있어서

인터넷 폭풍검색하여 여러자료를 토대로 원하는 내용을 만들어서 테스트를 해보고 개념을 잡았다.

if($fileExt == 'csv') 에서 처리할 사항이 있어서 테스트 해봤는데 파일 다루는데 많은 도움이 되었다.

리눅스 명령어 `rm -rf 디렉토리명`;

리눅스 명령어 `rm -rf 파일명`;    // `는 키보드 상의 왼쪽 위 물결(~)키와 함께 있는 기호

을 PHP 코드에 넣어서 파일을 실행해보니 권한이 없는 것도 그냥 지워버린다.


파일의 소유권자가 root 인 경우에는 @chmod($_tempdfile,0707); 로 파일의 모드를 변경을 시도해도 웹은 사용자이므로 권한 변경이 안된다.  Owner 를 apache 로 변경해줘야만 변경이 된다.


아래 코드에서 가장 핵심적인 사항은 unlink 는 파일을 지우는 함수인데, unlink(파일명) 이렇게 하면 안되고

unlink(경로+파일명) 으로 해야 지워진다.

파일을 읽어서 프로세스를 처리하고 나서 파일을 지울 때는 읽어드린 파일명과 경로를 포함해서 unlink 하면 바로 바로 지워지게 처리된다.


<?php
// 파일의 크기 구하기
foreach (glob("*.csv") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
    echo "<br />";
}
echo "<br />";

// 폴더내 파일 전부 구하기
echo "<br />";
$dir = './';
$files = scandir($dir);
 
foreach ($files as $ind_file) {
  if (is_file($ind_file)) {
    ?>
    <li><?php echo $ind_file;?> </li>
    <?php
  }
}


// 디렉토리에 있는 파일과 디렉토리의 갯수 구하기
$path = opendir("./"); // opendir 함수를 이용해서 현재 디렉토리의 핸들을 얻어옴

// readdir함수를 이용해서 현재 디렉토리에 있는 디렉토리와 파일들의 이름을 배열로 읽어들임
while($file=readdir($path)) {    
    if($file=="."||$file=="..") continue; // file명이 ".", ".." 이면 무시함
    $fileInfo = pathinfo($file);
    print_r($fileInfo);  // 파일 경로 정보가 어떻게 되는지 확인하기 위해 출력
    echo "<br />";
    $fileExt = $fileInfo['extension']; // 파일의 확장자를 구함

    if (empty($fileExt)){
        $dir_count++; // 파일에 확장자가 없으면 디렉토리로 판단하여 dir_count를 증가시킴
    } elseif($fileExt == 'csv') {
        $csv_count++;  // 파일 확장자가 CSV 이면 csv_count를 증가시킴
        $_tmpdfile = $path.$file;
        @chmod($_tempdfile,0707);    // 파일의 소유권이 있는 경우에만 권한변경
        $cmd = `rm -rf *.csv`;    // 파일의 소유권에 상관없이 파일 모두 삭제처리
        if(is_writable($_tmpdfile)) {
            unlink($_tmpdfile);
            echo "파일 삭제됨"."<br />";
        } else {
            echo "파일 쓰기(삭제) 권한 없음"."<br />";
        }
       
    } else {
        $file_count++;  // 파일에 확장자가 있으면 file_count를 증가시킴
    }

}
@closedir($path);

echo "<br />";
echo "subfolder 수는 : ".$dir_count."<br />";
echo "CSV 파일의 갯수는 : ".$csv_count."<br />";
echo "파일의 갯수는 : ".$file_count;
echo "<br />";

// 폴더내 파일 전부 구하기
echo "<br />";
$dir = './';
$files = scandir($dir);
 
foreach ($files as $ind_file) {
  if (is_file($ind_file)) {
    ?>
    <li><?php echo $ind_file;?></li>
    <?php
  }
}

?>


List of Articles
번호 제목 날짜 조회 수
340 환경변수 HTTP_USER_AGENT를 이용해서 스마트 기기 분류하기 2016.09.21 25959
339 확장자 추출 하기 2021.03.26 309
338 홈페이지 귀퉁이에 붙이는 공지창 file 2015.04.06 25426
337 헤더이용 다운로드 받을시 바로열기부분 소스 2018.07.24 7320
336 해당하는 날짜가 그달의 몇주째인지 계산 2014.02.27 26351
335 함수이름을 변수로 사용하기, 매개변수 없는 함수에 매개변수 넣기 2021.03.26 747
334 한글줄바꾸기 또는 utf-8 wordwrap 2014.04.12 26546
333 한글자르기 substr 2015.04.14 25198
332 한글이 깨져서 나올 때 - iconv 2018.08.29 3933
331 필드값 저장 2014.02.27 24276
330 프레임 사이트에서 새로고침(F5) 할때 초기화면으로 이동하지 않음 2019.01.08 1280
329 폴더에 사진올려놓고 리스트자동으로 만들기 2019.01.08 1302
328 폴더 용량 체크 2023.01.12 218
327 포트체크 방법 2019.01.16 1288
326 페이지 로딩 시간 측정 2014.02.27 26041
325 파일을 변수에 담기(ob_start를 이용한 방법) 2021.03.26 676
324 파일업로드 2017.02.19 19352
323 파일시스템, 폼 파일업로드 관련 함수 2017.03.27 21681
322 파일 확장자 비교 2016.12.23 21970
321 파일 종류에 따른 아이콘표시하기 함수 2019.01.16 1421
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved