mkdir(), rmdir(), is_dir(), scandir(), filetype(), unlink()
페이지 정보
작성자 서방님 댓글 0건 조회 414회 작성일 18-09-21 09:03본문
bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
php 가 실행되는 동안 현재 디렉토리 . 은 php 파일이 위치하고 있는 디렉토리를 의미하죠.
www/dir1/a.php 가 있다고 가정합니다.
a.php 안에서 아래 mkdir()를 실행시킵시다.
mkdir('test');
www/dir1/test/ 가 생깁니다.
mkdir('./test'); 와 결과가 같지요.
mkdir('../test');
www/test/ 가 생깁니다.
이제 삽질한 부분..ㅡ.ㅡ
www/test/test1 을 만들고 싶어서 아래와 같이 작성했었습니다.
mkdir('../test/test1');
결과는 실패...
www/test를 만들고 그 안에 들어가서 다시 test1 을 만들어야하죠.
recursive 한 상황이 생긴겁니다. 이걸 모르고 계속 다른 원인을 찾아 해맸습니다. ㅋ
디렉토리 하나가 아니고, 그 아래에 더, 더, 만들고 싶을 때는 recursive 인자를 true 로 설정하고 함수를 호출해야합니다.
mkdir('../test/test1', 0777, true);
0777 디렉토리의 권한설정입니다. 기본 값이 0777 이네요. (따옴표로 감싸지 않고 사용해야 합니다. 8진수 그대로)
아! 그리고,
mkdir('../test/test1');
와
mkdir('../test/test1/');
는 같습니다.
디렉토리 이름 뒤에 / 를 붙여도 되고 안 붙여도 됩니다.
만든 디렉토리를 삭제하는 방법은 rmdir()입니다.
bool rmdir ( string $dirname [, resource $context ] )
이건 쉽습니다.
rmdir('../test/test1');
이렇게 하면 상위 디렉토리 test 안에 있는 test1 디렉토리를 삭제합니다.
그럼, rmdir('../test/'); 라고 하면, 그 안에 있는 test1 도 몽땅 같이 지워질까요??
recursive 하게 동작을 할까요??
No, recursive 하게 동작하지 않습니다.
그래서 , php.net 의 rmdir() 설명 부분에 있는 예를 올립니다. recursive 하게 동작하는, 하위 디렉토리까지 모조리 삭제해주는 코드입니다.
<?php function rrmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != "." && $object != "..") { if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object); } } reset($objects); rmdir($dir); } } ?>
rrmdir() 함수 내에 다시 rrmdir() 함수가 보이죠?? 까칠한 재귀함수입니다.
못 본 함수가 몇개 있네요.
is_dir()
bool is_dir ( string $filename )
$filename으로 입력해준 값이 존재하는 디렉토리라면 true를 리턴해줍니다.
scandir()
array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )
디렉토리를 지정하면 그 안에 있는 파일과 디렉토리를 배열로 리턴해주는 함수 입니다.
filetype()
string filetype ( string $filename )
$filename 의 타입을 리턴해줍니다. 유닉스, 리눅스의 경우, 모든 것이 파일로 처리됩니다. 그것들 중에 디렉토리도 있고, 파일도 있고, 소켓도 있고 머 그렇죠.
리턴값은 아래의 것들 중 하나입니다.
Possible values are fifo, char, dir, block, link, file, socket and unknown.
아니면, FALSE
unlink()
bool unlink ( string $filename [, resource $context ] )
파일을 지웁니다.
댓글목록
등록된 댓글이 없습니다.