mkdir(), rmdir(), is_dir(), scandir(), filetype(), unlink() > php

본문 바로가기

php

mkdir(), rmdir(), is_dir(), scandir(), filetype(), unlink()

페이지 정보

작성자 서방님 댓글 0건 조회 31회 작성일 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 ] )


파일을 지웁니다.



댓글목록

등록된 댓글이 없습니다.

Total 515건 1 페이지
게시물 검색

회원로그인

접속자집계

오늘
402
어제
425
최대
592
전체
28,884

그누보드5
Copyright © seobangnim.com All rights reserved.
자바스크립트를 활성화 하세요![ 브라우저에서 자바스크립트를 활성화하는 방법 ]