Umask () 함수는 현재 프로세스 (UMASK)의 파일 모드 생성 마스크를 설정하거나 가져 오는 데 사용됩니다. 파일 모드 마스크는 새로 생성 된 파일의 기본 권한을 결정합니다. 적절한 마스크를 설정함으로써 PHP 프로그램은 새 파일을 만들 때 권한이 자동으로 제한되도록 할 수 있습니다.
<span><span><span class="hljs-comment">// 현재 프로세스의 파일 생성 마스크를 가져옵니다</span></span><span>
</span><span><span class="hljs-variable">$current_umask</span></span><span> = </span><span><span class="hljs-title function_ invoke__">umask</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"현재의umask가치는입니다: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$current_umask</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-comment">// 새로운 것을 설정하십시오umask</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0022</span></span><span>); </span><span><span class="hljs-comment">// 마스크 값은입니다0022,새 파일의 권한이 있음을 나타냅니다755</span></span><span>
</span></span>
위의 예에서는 먼저 현재 Umask 값을 얻고 Umask () 함수를 사용하여 새로운 마스크 값을 설정합니다. 0022 의 의미는 다음과 같습니다. 새로 생성 된 파일은 자동으로 755 권의 권한으로 설정됩니다 (즉, 사용자는 실행 권한을 읽고 쓰는 반면 다른 사용자는 읽기 및 실행 권한 만 있습니다).
STAT () 함수는 파일 크기, 마지막 수정 시간 및 파일 권한을 포함하여 지정된 파일의 상태 정보를 얻는 데 사용됩니다. 모드 필드가 파일의 권한 모드를 나타내는 디테일이있는 배열을 반환합니다.
<span><span><span class="hljs-variable">$file_stat</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stat</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>);
</span><span><span class="hljs-comment">// 파일 권한 모드를 봅니다</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일의 권한 모드는 다음과 같습니다: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$file_stat</span></span><span>[</span><span><span class="hljs-string">'mode'</span></span><span>]) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span></span>
stat () 에 의해 반환 된 모드는 정수 값이며 약간 마스크로 구문 분석해야합니다. 비트 작업을 통해 파일의 자세한 권한 정보를 얻을 수 있습니다.
파일 권한을 더 잘 관리하기 위해 파일 권한을 사용 하여 파일 권한의 변경 사항을 추적 할 수 있습니다. 예를 들어, 파일이 생성 된 후 실제 권한을 확인하고 예상대로 파일의 실제 권한을 확인하려는 파일이 있다고 가정하십시오.
새 파일의 권한이 우리의 요구 사항을 충족하는지 확인하기 위해 적절한 UMASK를 설정하십시오.
STAT () 함수를 사용하여 파일에 대한 권한을 얻습니다.
STAT () 에 의해 반환 된 권한 값을 예상 값과 비교하여 파일 권한이 변경되었는지 여부를 결정하십시오.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 파일 권한 마스크를 설정합니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0022</span></span><span>);
</span><span><span class="hljs-comment">// 새 파일을 만듭니다</span></span><span>
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-string">'example.txt'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-string">"This is a test file."</span></span><span>);
</span><span><span class="hljs-comment">// 파일 상태를 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$file_stat</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stat</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span><span><span class="hljs-comment">// 파일 권한 모드를 가져옵니다</span></span><span>
</span><span><span class="hljs-variable">$file_permissions</span></span><span> = </span><span><span class="hljs-variable">$file_stat</span></span><span>[</span><span><span class="hljs-string">'mode'</span></span><span>] & </span><span><span class="hljs-number">0777</span></span><span>; </span><span><span class="hljs-comment">// 비트와 작동,파일의 권한 값을 얻으십시오</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일의 실제 권한은 다음과 같습니다: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$file_permissions</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-comment">// 파일 권한이 기대치를 충족하는지 여부를 결정하십시오</span></span><span>
</span><span><span class="hljs-variable">$expected_permissions</span></span><span> = </span><span><span class="hljs-number">0755</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file_permissions</span></span><span> === </span><span><span class="hljs-variable">$expected_permissions</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일 권한은 기대치와 일치합니다!\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일 권한은 기대치를 충족하지 않습니다,실제 허가는입니다: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$file_permissions</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
먼저, 새 파일의 허가가 0755 인지 확인하기 위해 Umask (0022) 를 통해 파일 권한 마스크를 설정합니다.
file_put_contents () 함수를 사용하여 새 파일 example.txt를 만듭니다.
그런 다음 STAT () 함수, 특히 파일 ( 모드 )의 권한 모드를 통해 파일의 상태 정보를 얻습니다.
마지막으로 파일의 권한 부분은 Bitwise 작동 ( & 0777 )에 의해 추출되며 예상 권한 ( 0755 )과 비교됩니다.
<span><span><span class="hljs-section">파일의 실제 권한은 다음과 같습니다: 755</span></span><span>
파일 권한은 기대치와 일치합니다!
</span></span>
이런 식으로, 우리는 요구 사항에 따라 파일 권한이 설정되어 있는지 효과적으로 확인하여 파일 작업의 보안을 보장 할 수 있습니다.