개발 Q&A

제목 chmod를 사용하려면 어떻게 해야하나요
글쓴이 rhe 작성시각 2014/12/29 13:02:54
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 14964   RSS
뜬금없는 질문드려 죄송합니다. 

write_file(); 함수를 사용하기 전에 해당 파일의 권한을 644에서 707로 바꾸어서 함수를 사용하고 다시 644로 바꾸어주고 싶습니다.
그런데 여기저기 찾아보아도 알수가 없어서 이렇게 글을 올립니다.

@chmod($file, 0707);
이렇게 하면 사용할 수 없다고 나오는데요
코드이그나이트에서도 이걸 사용할 수 있을거라는 생각은 드는데 어찌해야할지 잘 몰라서....

양승현님 Tip을 참고해도 $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;

 }
 
 다음글 간단질문 - unserialize()라는게 뭘 하는건가... (2)
 이전글 [해결]폼검증 실패시에 html input에 값 다시 ... (3)

댓글

변종원(웅파) / 2014/12/29 13:29:20 / 추천 0
http://php.net/manual/kr/function.exec.php 참고하세요.
게시판이동합니다.
한대승(불의회상) / 2014/12/29 13:46:20 / 추천 0
사용 할 수 없다는게 정확히 어떤 의미인가요?
파일을 찾을 수 없다는건지, 권한을 변경 할 수 없다는건지.. 의미가 불명확하네요.
 
rhe / 2014/12/29 14:10:33 / 추천 0
@chmod($file, 0707);에서 @ 지우고 해보니 에러가 발생해서요
권한 변경이 안돼서요

일단 더 찾아보고 공부해볼게요
답변 감사합니다.
들국화 / 2014/12/29 14:13:26 / 추천 0
http://php.net/manual/kr/function.chmod.php
참조 하시고요.
에러가 발생되면 에러내용을 적어주는게 가장 정확합니다.
@는 가능한 쓰지 마세요.
rhe / 2014/12/29 14:31:10 / 추천 0
$w_file = APPPATH.'config/database.php';
chmod($w_file, 0777);
// database.php 파일없을 경우 생성하여서 쓰기한다.
write_file($w_file, $file_contents);

직관적으로 이렇게 했더니 바로 아래와 같은 에러가 발생했습니다.

A PHP Error was encountered

Severity: Warning

Message: chmod(): Operation not permitted

Filename: controllers/main.php

Line Number: 78

그래서...... 죄송합니다. 귀찮게 해드려서 ㅠ.ㅠ
@ 가능한 쓰지않도록 하겠습니다.

들국화 / 2014/12/29 14:41:22 / 추천 0
해당 디렉토리 변경 권한이 없는것 같네요.
권한체크해 보세요.
한대승(불의회상) / 2014/12/29 15:01:41 / 추천 0
들국화님 말대로 config 폴더나 database.php의 쓰기 권한이 없어서 발생한 에러인것 같네요.
윈도우에서는 에러가 발생하지 않지만 리눅스나 유닉스 계열 OS에서는 권한이 없으면 에러가 납니다.
rhe / 2014/12/29 15:30:00 / 추천 0
아 네 ㅠ