ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PHP mkdir 권한 문제(umask)
    개발/php 2018. 11. 9. 17:47

    파일 업로드 관련 코드를 작성하던 도중 다음과 같은 코드가 있었다.

    $path = '/home/test/tmp';
    if (is_dir($path) === false) {
        mkdir($path, 0777, true);
    }

    위 코드에서 보면 만들고자 하는 디렉토리는 /home/test/tmp 라는 디렉토리이고 recursive 옵션을 true 로 주어서 test 폴더와 tmp 폴더가 만들어지는고 test 와 tmp 폴더의 권한은 777 옵션이 적용되어있는 것을 기대 하였다.

    하지만 만들어진 디렉토리를 보니 권한이 755 로 잡혀잇는것이다.

    ls -al |grep test_dir
    drwxr-xr-x   3 root   root    4096 9월  2 11:11 test_dir

    원인을 찾던도중 다음과 같은 원인을 찾을수 있었다.

    umask
    umask 란 ? 권한을 설정할 때 수동적으로 권한을 주지 않고 파일이나 디렉토리가 생성됨가 동시에 지정된 권한이 주어주도록 함.
    
    현재 리눅스PC umask 설정값이 0022 로 잡혀있어서 0777 디렉토리를 생성하고자 할때
    0777 - 0022 = 0755
    다음과 같은 결과값이 나왔던 것이다.

    이를 코드상에서 0777 의 옵션으로 변경하고자 하면 아래와 같이 코드를 수정하면된다.

    $oldumask = umask(0);
    $path = '/home/test/tmp';
    if (is_dir($path) === false) {
        mkdir($path, 0777, true);
    }
    umask($oldumask);

    링크

    '개발 > php' 카테고리의 다른 글

    PHP 대용량 엑셀다운로드  (1) 2018.11.09
    PHP redis 연동  (0) 2018.11.09
    php 에서 한글포함 여부를 체크해보자  (0) 2018.11.09
    Php open_tag 관련  (0) 2016.08.13
    트레이트  (0) 2016.08.07
Designed by Tistory.