질문Q #3022
chmod를 사용하려면 어떻게 해야하나요
rhe2014-12-29 13:02:54
뜬금없는 질문드려 죄송합니다. 

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;

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

일단 더 찾아보고 공부해볼게요
답변 감사합니다.
#4 들국화 2014-12-29 14:13:26
http://php.net/manual/kr/function.chmod.php
참조 하시고요.
에러가 발생되면 에러내용을 적어주는게 가장 정확합니다.
@는 가능한 쓰지 마세요.
#5 rhe 2014-12-29 14:31:10
$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

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

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