메뉴 건너뛰기

프로그램언어

조회 수 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
  }
}

?>


  1. 무조건 알아야 할 PHP 속도 테스트 14 가지

    Date2014.02.27 Views30280
    Read More
  2. 몫과 나머지 구하기

    Date2017.03.07 Views18471
    Read More
  3. 메일주소의 골뱅이를 그림처리하기

    Date2017.03.06 Views15508
    Read More
  4. 메모장소스

    Date2019.01.08 Views2000
    Read More
  5. 멀티 파일다운로드 꽁수로 구현하기

    Date2020.06.19 Views437
    Read More
  6. 마우스 오버시 사진변환, 파일에러시 대체이미지 적용(소스일부)

    Date2018.07.24 Views4584
    Read More
  7. 링크를 걸때 http 처리방법

    Date2016.12.23 Views19019
    Read More
  8. 리스트 페이징

    Date2014.02.27 Views19386
    Read More
  9. 리다이렉션(페이지 이동)의 3가지 방법, location.href

    Date2017.03.07 Views40139
    Read More
  10. 로또 숫자 랜덤하게 1~45까지 숫자 빼오기

    Date2014.02.27 Views25433
    Read More
  11. 로그인페이지에서 온 경우/로그인한 페이지로 이동

    Date2016.12.23 Views18847
    Read More
  12. 디비내용을 엑셀 파일로 다운로드 시키는 방법

    Date2019.01.08 Views1391
    Read More
  13. 디렉토리의 제어

    Date2019.01.08 Views1222
    Read More
  14. 디렉토리내 특정 확장자를 가진 파일 전부 삭제

    Date2015.04.14 Views25515
    Read More
  15. 디렉토리 안의 파일의 내용들을 읽는 예

    Date2016.12.23 Views19012
    Read More
  16. 두 날짜 사이의 차이 구하기

    Date2017.03.07 Views18866
    Read More
  17. 도메인 앞에 자동으로 WWW를 붙이는 방법

    Date2017.03.07 Views18885
    Read More
  18. 대소문자 바꾸기 (strtoupper, strtolower)

    Date2016.12.23 Views19658
    Read More
  19. 단어필터링

    Date2019.01.08 Views1251
    Read More
  20. 다중파일 업로드 + 이미지 미리보기 (Javascript, jQuery )

    Date2020.12.15 Views912
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved