TIP게시판

제목 디렉토리 퍼미션변경, 디렉토리 삭제, 통체로 복사 등등.
글쓴이 양승현 작성시각 2011/04/01 16:26:21
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 14119   RSS

어디선가 찾아서 쓰고 있는 함수들입니다.

cms의 common라이브러리에 넣어두고 쓰고있는 것들이지요.


 /**
  * 하뒤 디렉토리 파일까지 퍼미션 지정
  *
  * @param String $path : 디렉토리
  * @param int $filemode : 퍼미션 값
  */
 function chmodr($path, $filemode) {
  $CI =& get_instance();
  if (!is_dir($path))
   return chmod($path, $filemode);

  $dh = opendir($path);
  while (($file = readdir($dh)) !== false) {
   if($file != '.' && $file != '..') {
    $fullpath = $path.'/'.$file;

    if(is_link($fullpath))
     return FALSE;
    elseif(!is_dir($fullpath) && !chmod($fullpath, $filemode))
      return FALSE;
    elseif(!$CI->common->chmodr($fullpath, $filemode))
     return FALSE;
   }
  }

  closedir($dh);

  if(chmod($path, $filemode))
   return TRUE;
  else
   return FALSE;
 }

 /**
  * 디렉토리 삭제
  * @param String $dir : 삭제할 디렉토리
  * @return Boolean
  */
 function deleteDirectory($dir) {
  if (!file_exists($dir)) return true;
  if (!is_dir($dir) || is_link($dir)) return unlink($dir);

  foreach (scandir($dir) as $item) {
   if ($item == '.' || $item == '..') continue;
   if (!$this->deleteDirectory($dir . "/" . $item)) {
    chmod($dir . "/" . $item, 0777);
    if (!$this->deleteDirectory($dir . "/" . $item)) return false;
   };
  }
  return rmdir($dir);
 }

 /**
  * 디렉토리 통체로 복사하여 하위 디렉토리까지 복사.
  *
  * @param String $src : 복사 할 디렉토리.
  * @param String $dst : 복사 될 디렉토리.
  */
 function recurseCopy($src, $dst) {
  $dir = opendir($src);
  @ mkdir($dst);
  while (false !== ($file = readdir($dir))) {
   if (($file != '.') && ($file != '..')) {
    if (is_dir($src . '/' . $file)) {
     $this->recurseCopy($src . '/' . $file, $dst . '/' . $file);
    } else {
     copy($src . '/' . $file, $dst . '/' . $file);
    }
   }
  }
  closedir($dir);
 }

 다음글 전에 xmlToArray가 쓰기 불편해서 이걸로 변경했...
 이전글 object To Array 함수 입니다. (4)

댓글

무명의시인2 / 2011/04/05 21:41:23 / 추천 0
귀중한 자료 감사합니다^^

저도 CI에 대해 양승현님 처럼 많은분들에게 도움을 드릴날을 손꼽아 기다리고 있습니다.

부지런히 포럼에 많이 오고 보고 배우겠습니다.^^