【PHP】ファイル、ディレクトリのパーミッションを取得する。

めも。

下記はファイル、ディレクトリ共にパーミッション777のもので実験。

$fileDir = '/path/to/fileDir';
$filePath = '/path/to/filePath.ext';

$dirPerms = fileperms($fileDir);
$filePerms = fileperms($filePath);

var_dump($dirPerms, $filePerms);
↓
int(16895) int(33279)

但しfileperms()関数で取得できるパーミッション情報は、上記の通り10進数で表現されるため、普段見慣れている形式で取得したい場合は、8進数形式にフォーマットしてやる必要がある。

$dirPerms = substr(sprintf('%o', fileperms($fileDir)), -4);
$filePerms = substr(sprintf('%o', fileperms($filePath)), -4);

var_dump($dirPerms, $filePerms);
↓
string(4) "0777" string(4) "0777"

sprintf()の第1引数「%o」は引数を8進数にフォーマットするという意味。その後、substr()で得られた値の後ろから4文字を切り出すことで、見慣れた4桁のパーミッション表現を取得することが出来る。