쓰기 권한이 없는 PHP mkdir() 문제를 해결하는 방법

不言
풀어 주다: 2023-04-01 06:00:02
원래의
3225명이 탐색했습니다.

이 글은 주로 쓰기 권한이 없는 PHP mkdir() 문제에 대한 해결책, umask에 대한 자세한 설명, mkdir() 이후 쓰기 권한이 없는 문제에 대한 해결책을 소개합니다.

mkdir을 사용하세요. 폴더를 생성하려면 이 함수에 두 개의 매개변수가 있는 것을 발견했습니다. 두 번째 매개변수는 새로 생성된 폴더에 대한 권한을 지정하는 것입니다.

하지만 mkdir('file address', 0777);을 직접 사용하면 새 폴더의 권한이 777이 아니라 일반적으로 022라는 것을 알 수 있습니다.

mkdir이 폴더에 대한 권한을 설정할 때 현재 운영 체제에 로그인한 사용자의 umask(사용자 기본 권한 속성) 값과 비트 "AND"를 수행하고 그 결과 값이 최종 권한 값이 되기 때문입니다.

마스크가 뭔가요?

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

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

umask는 사용자가 생성한 파일에 대한 기본 권한을 설정합니다. 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를 공유하므로 혼란이 발생할 수 있습니다.

2. 가장 일반적으로 사용되는 방법이기도 한 chmod 함수를 사용하세요.

mkdir('文件地址', 0777); 
chmod('文件地址', 0777);
로그인 후 복사

마지막으로 권한 값은 8진수, 즉 "0"으로 시작하는 것이 가장 좋습니다. 따옴표를 추가하려면

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

오류를 해결하는 방법 No Supported encrypterfound in laravel 5.1

PHP

에서 치명적인 오류 session_start() 오류를 해결하는 방법

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

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿