SunshinePHP 2020 CFP Started

posix_access

(PHP 5 >= 5.1.0, PHP 7)

posix_access ファイルのアクセス権限を判断する

説明

posix_access ( string $file [, int $mode = POSIX_F_OK ] ) : bool

posix_access() は、ファイルに対するユーザーの アクセス権限を調べます。

パラメータ

file

調べるファイルの名前。

mode

POSIX_F_OKPOSIX_R_OKPOSIX_W_OK および POSIX_X_OK のうちのひとつあるいは複数からなるマスク。

POSIX_R_OKPOSIX_W_OK および POSIX_X_OK は、ファイルが存在して読み込み/書き込み/ 実行の権限があるかどうかを調べます。 POSIX_F_OK は単にファイルが存在するかどうか だけを調べます。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

例1 posix_access() の例

この例は $file が読み書き可能であるかどうかを調べ、 そうでない場合にエラーメッセージを表示します。

<?php

$file 
'some_file';

if (
posix_access($filePOSIX_R_OK POSIX_W_OK)) {
    echo 
'このファイルの読み込みと書き込みが可能です!';

} else {
    
$error posix_get_last_error();

    echo 
"エラー $error: " posix_strerror($error);
}

?>

注意

注意: セーフモード が有効の場合、PHP は操作を行うファイル/ディレクトリが実行するスクリプトと 同じ UID (所有者)を有しているかどうかを確認します。

参考

  • posix_get_last_error() - 直近で失敗した posix 関数が設定したエラー番号を取得する
  • posix_strerror() - 指定したエラー番号に対応するシステムのエラーメッセージを取得する

add a note add a note

User Contributed Notes 1 note

up
0
unixguy at earth dot com
5 years ago
It should be noted that this function performs access checks based on the real UID and real GID of the process running PHP.  These aren't necessarily the same as the effective UID and GID.

In other words, it may well be that access() returns “true” for a particular permission, but an fopen() operation which requires the same permission will fail, and vice versa.

Keep that in mind if you use access() for such checks.
To Top