php
PHP - fileperms 함수
int fileperms ( string $filename )
(PHP 4, PHP 5)
파일(또는 디렉토리)의 퍼미션 값을 알려주는 함수입니다.
$filename 인자에 파일(또는 디렉토리)의 경로를 지정하면 10진수로 반환하는데, 일반적으로 파일의 권한이 0644이므로 10진수인 33188로 반환받아 8진수로 변환해줄 필요가 있습니다.
sprintf 함수로도 가능합니다.
substr 로 끝에서 4자리를 자르는 이유는 파일의 유형에 따라 4~6자리로 표현되기 때문입니다. 다음은 다른 방법의 예제입니다.
(PHP 4, PHP 5)
파일(또는 디렉토리)의 퍼미션 값을 알려주는 함수입니다.
$filename 인자에 파일(또는 디렉토리)의 경로를 지정하면 10진수로 반환하는데, 일반적으로 파일의 권한이 0644이므로 10진수인 33188로 반환받아 8진수로 변환해줄 필요가 있습니다.
<?php
$stat = fileperms('test.php');
echo $stat; // 결과: 33188
// decoct함수는 10진수를 8진수로 변환해줍니다.
$decoct = decoct($stat);
echo $decoct; // 결과: 100644
// substr함수로 끝에서 4자리만 추출해서 8진수로 만들어 줍니다.
echo substr($decoct, -4); // 결과: 0644
?>
sprintf 함수로도 가능합니다.
<?php
// %o는 정수를 8진수로 변환해줍니다.
$decoct = substr(sprintf('%o', fileperms('test.php')), -4);
echo $decoct; // 결과: 0644
?>
substr 로 끝에서 4자리를 자르는 이유는 파일의 유형에 따라 4~6자리로 표현되기 때문입니다. 다음은 다른 방법의 예제입니다.
<?php
$dir = './mail/test.php';
if(is_file($dir)){
// 파일이면 -32768, 폴더이면 -16384를 뺀 나머지가 권한입니다.
$perms = fileperms($dir) - 32768;
echo $perms; // 결과: 644
} else if(is_dir($dir)){
$perms = fileperms($dir) - 16384;
echo $perms;
}
?>
0 댓글