메뉴 건너뛰기

프로그램언어

조회 수 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
번호 제목 날짜 조회 수
80 파일을 변수에 담기(ob_start를 이용한 방법) 2021.03.26 676
79 13자리 timestamp 생성하기 file 2020.09.28 649
78 PHP 버전이 낮아 imagerotate() 함수가 없을때 대신 사용하는 함수 2019.12.31 644
77 while, for, foreach 속도 비교 2021.03.26 623
76 다중 파일을 zip으로 묶어받기 2020.06.19 619
75 파일 다운로드 함수(멀티 이어받기/속도제한) 2020.06.19 618
74 알파벳 순서대로 출력하기 ord(), chr() 2021.03.26 583
73 substr(), mb_substr(), iconv_substr() 2021.03.26 564
72 csv파일 다루기. fputcsv(), fgetcsv() 2021.03.26 558
71 서브도메인 세션 공유 2021.03.26 546
70 Javascript 두 좌표 사이의 거리 구하기, 두 좌표의 중앙 좌표 구하기 file 2020.09.23 535
69 네이버 지도 API를 이용한 주소를 좌표로 변환하기 (PHP) 2020.09.22 495
68 CodeIgniter - DB오류체크, 디버깅 여부 설정 2021.03.29 494
67 사업자등록번호 유효성 체크 2020.08.24 470
66 PHP 쉘 스크립트 2021.03.26 457
65 배열 더하기 (+ 를 이용한 배열 합치기 ) 2021.03.26 451
64 멀티 파일다운로드 꽁수로 구현하기 2020.06.19 438
63 주차 , 요일, 해당주의 시작일, 해당주의 종료일 date() 2021.07.08 432
62 DAUM 지도 API 좌표→주소(주소->좌표) 변환 2020.10.05 431
61 경로 제외한 파일 이름만 선택하는 방법, Basename() 2020.11.23 429
Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved