PHP가 777 권한으로 디렉토리를 생성 할 수없는 이유는 무엇입니까?
다음 명령과 함께 PHP를 사용하여 서버에 디렉토리를 만들려고합니다.
mkdir("test", 0777);
그러나 전체 권한은 제공하지 않으며 다음 만 제공합니다.
rwxr-xr-x
모드는 현재에 의해 수정되어 umask
있다, 022
이 경우.
끝까지 umask
작품은 감산 하나입니다. 실제 권한 을 얻으려면에 주어진 초기 권한을 mkdir
빼고 뺍니다 .umask
0777
- 0022
======
0755 = rwxr-xr-x.
이런 일이 발생하지 않도록하려면 umask
일시적으로 0으로 설정하여 효과가 없습니다. 다음 스 니펫으로이를 수행 할 수 있습니다.
$oldmask = umask(0);
mkdir("test", 0777);
umask($oldmask);
첫 번째 줄 umask
은 이전 줄 을에 저장하는 동안을 0으로 변경합니다 $oldmask
. 두 번째 줄은 원하는 권한을 사용하여 디렉토리를 만듭니다 (이제 관련 없음) umask
. 세 번째 줄은를 umask
원래 상태로 복원합니다 .
자세한 내용은 umask 및 mkdir에 대한 PHP doco 를 참조하십시오.
파일 및 디렉토리 생성은 umask 설정의 영향을받습니다. 다음과 같이 umask를 조작하여 특정 권한 집합으로 파일을 만들 수 있습니다.
$old = umask(0);
mkdir("test", 0777);
umask($old);
다중 스레드 웹 서버에서이 기능을 사용하지 마십시오. 파일을 생성 한 후 chmod ()로 파일 권한을 변경하는 것이 좋습니다.
예:
$dir = "test";
$permit = 0777;
mkdir($dir);
chmod($dir, $permit);
아마도 당신의 umask 는 그것들을 제외하도록 설정되어있을 것입니다.
시도한 사람들을 위해
mkdir('path', 777);
그리고 그것은 작동하지 않았습니다.
분명히 파일 모드 앞의 0이 매우 중요하기 때문에 chmod가 전달 된 숫자를 10 진수 대신 8 진수로 해석하도록 지시합니다.
추신. 이것은 질문에 대한 해결책이 아니라 허용 된 anwser에 대한 추가 기능 일뿐입니다.
참조 URL : https://stackoverflow.com/questions/3997641/why-cant-php-create-a-directory-with-777-permissions
'IT TIP' 카테고리의 다른 글
일치하는 속성에 대한 배열 검색 (0) | 2021.01.09 |
---|---|
django에서 login_required 리디렉션 URL을 지정하는 방법은 무엇입니까? (0) | 2021.01.09 |
Express.js 또는 Connect.js에서 여러 하위 도메인을 구성하려면 어떻게해야합니까? (0) | 2021.01.09 |
TinyMCE 텍스트 영역에서 값 가져 오기 (0) | 2021.01.09 |
mongodb의 수많은 레코드에 대한 느린 페이지 매김 (0) | 2021.01.09 |