>  기사  >  백엔드 개발  >  php mkdir() 함수에 쓰기 권한이 없는 문제

php mkdir() 함수에 쓰기 권한이 없는 문제

怪我咯
怪我咯원래의
2017-07-11 14:25:521712검색

mkdir을 사용하여 폴더를 만들 때 이 함수에 두 개의 매개변수가 있는 것을 발견했습니다. 두 번째 매개변수는 새로 생성된 폴더에 대한 권한을 지정하는 것입니다. 하지만 mkdir('file address', 0777);을 직접 사용하면 새 폴더의 권한이 777이 아니라 일반적으로 022라는 것을 알 수 있습니다. mkdir이 폴더에 대한 권한을 설정할 때 현재 운영 체제에 로그인한 사용자의 umask(사용자 기본 권한 속성) 값과 비트 "AND"를 수행하고 그 결과 값이 최종 권한 값이 되기 때문입니다.

마스크가 뭔가요?

파일 생성을 위한 기본 권한은 어떻게 얻나요? 이 기본 권한을 변경하는 방법은 무엇입니까?

시스템에 로그인하여 파일을 생성하면 항상 기본 권한이 있습니다. 그러면 이 권한은 어디서 오는 걸까요? 이것이 umask가 하는 일입니다.

umask는 사용자가 생성한 파일에 대한 기본 권한을 설정합니다. 이는 chmod와 반대 효과가 있습니다. umask는 "보완 코드" 권한을 설정하고 chmod는 파일 권한 코드를 설정합니다. 일반적으로 umask 값은 /etc/profile, ​​​​$HOME/.bash_profile 또는 $HOME/.profile에 설정됩니다.

umask 값을 계산하는 방법은 무엇입니까?

umask 명령을 사용하면 파일을 생성할 때 기본 모드를 설정할 수 있습니다. umask 값에는 각 사용자 유형(파일 소유자, 동일한 그룹의 사용자, 기타 사용자)에 해당하는 숫자가 있습니다. 파일의 경우 이 숫자의 최대값은 6입니다. 시스템에서는 텍스트 파일을 생성할 때 텍스트 파일에 실행 권한을 부여하는 것을 허용하지 않습니다. 생성 후 이 권한을 높이려면 chmod 명령을 사용해야 합니다. 디렉터리에서는 실행 권한을 설정할 수 있으므로 디렉터리의 경우 umask의 최대 개수는 7개까지 가능합니다.

이 명령의 일반적인 형식은 umask nnn입니다. 여기서 nnn은 000 - 777일 수 있습니다.

우리는 umask가 권한에서 해당 비트를 "제거"한다는 점만 기억하면 됩니다.

예: umask 값이 022인 경우 기본 디렉터리 권한은 755이고 기본 파일 권한은 644입니다.
따라서 사용자 umask가 022(보통 기본값)인 경우, 즉 000 010 010은 mkdir에서 지정한 777, 즉 111 111 111과 같습니다. "AND" 이후에 얻는 실제 권한은 다음과 같습니다. 022.

새 폴더의 권한을 최대화하려면 두 가지 방법이 있습니다. (물론 현재 사용자가 가장 높은 권한을 부여할 수 있다는 조건 하에서)

1 사용자 umask를 수정하면 PHP가 제공합니다. umask 함수:

코드는 다음과 같습니다.

$oldumask=umask(0); 
mkdir('test',0777); 
umask($oldumask);

이 방법은 스크립트의 시작 파일에 umask 값을 지정한 다음 mkdir을 직접 사용하여 권한을 제어합니다. 다중 스레드 서버에서 umask 기능을 사용하는 경우 많은 Two 스레드가 umask를 공유하므로 혼란이 발생할 수 있습니다.

2. 가장 일반적으로 사용되는 방법이기도 한 chmod 함수를 사용합니다.

code 코드는 다음과 같습니다.

mkdir('文件地址', 0777); 
chmod('文件地址', 0777);

마지막으로 권한 값은 8진수로 가장 잘 표현된다는 점에 유의해야 합니다. "0"으로 시작하며 따옴표를 추가하면 안 됩니다.

위 내용은 php mkdir() 함수에 쓰기 권한이 없는 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.