IT TIP

PHP가 777 권한으로 디렉토리를 생성 할 수없는 이유는 무엇입니까?

itqueen 2021. 1. 9. 11:15
반응형

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원래 상태로 복원합니다 .

자세한 내용은 umaskmkdir에 대한 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

반응형