Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 리다이렉트
- 리디렉트
- Raspbian
- Centos Node js
- 아두이노 ESP8266
- 라즈베리파이 3b+
- MariaDB
- 아두이노 fingerprint
- 아두이노 https
- js for 반복문
- js 반복문
- Apache
- 아두이노
- js 내부함수
- 아두이노 https post
- 라즈베리파이
- redirect
- 아두이노 DB
- js 내부함수 반복문
- CentOS8
- 구글 클라우드 플랫폼
- 리디렉션
Archives
- Today
- Total
dinist
PHP 폴더 복사 함수 코드 본문
PHP에서는 폴더 복사 함수가 없으므로 직접 구현해야한다.
opendir로 대상 디렉터리 내의 모든 파일, 디렉터리를 확인하여 현재디렉터리, 상위디렉터리,
숨김파일 및 폴더(.으로 시작하는 이름)를 제외한 모든 파일과 디렉터리를 복사하는 코드를 작성해봤다.
만약 숨김파일 및 폴더까지 가져오려면 if 조건절의 내용을 수정해야한다.
하위 디렉터리에 있는 모든 파일까지 재귀호출로 가져온다.
재귀호출을 사용하였으므로 하위 폴더 및 파일의 갯수가 많을 경우 시간이 오래걸릴것이므로 하위 폴더 및 파일의 갯수가 많지 않을경우에 사용하는것을 권장.
복사를 위한 원본폴더의 구조 및 복사 코드 위치는 다음과 같다.
directoryCopy.php 의 파일은 다음과 같다.
<?php
$target_base = __DIR__.DIRECTORY_SEPARATOR;
$from_dir_name = "Test"; // 복사할 디렉터리명
$to_dir_name = "Test_copy"; // 복사될 디렉터리명
$from_dir_path = $target_base.DIRECTORY_SEPARATOR.$from_dir_name;
$to_dir_path = $target_base.DIRECTORY_SEPARATOR.$to_dir_name;
function directoryCopy($from,$to){
$dir_resource = opendir($from);
@mkdir($to,0755); // 폴더의 기본 퍼미션은 0755 이다.
while($dir_resource && $current_obj = readdir($dir_resource)):
if(strpos($current_obj,".") !== 0): // 현재디렉터리, 상위디렉터리, *nix 숨김파일 및 폴더 제외
if(is_dir($from.DIRECTORY_SEPARATOR.$current_obj)):
directoryCopy($from.DIRECTORY_SEPARATOR.$current_obj,$to.DIRECTORY_SEPARATOR.$current_obj);
else:
$from_path = $from.DIRECTORY_SEPARATOR;
$to_path = $to.DIRECTORY_SEPARATOR;
copy($from_path.$current_obj,$to_path.$current_obj);
endif;
endif;
endwhile;
closedir($dir_resource);
}
directoryCopy($from_dir_path,$to_dir_path);
실행결과
잘못된 내용이나 더 나은 코드가 있다면 언제든 댓글 남겨주세요..!
'Web > PHP' 카테고리의 다른 글
그누보드 sql_query 실행시 monolog 라이브러리를 활용한 에러로깅 (0) | 2023.11.08 |
---|---|
[Laravel] - Eloquent에서 Enum 활용 (0) | 2023.05.24 |
PHP - Enum 사용하기 2 (0) | 2023.05.24 |
PHP - Enum 사용하기 (0) | 2023.05.24 |
[PhpStorm] 라라벨 serve , npm dev 설정 추가 (0) | 2023.01.17 |