PHPプログラミング

レシピ

ファイル / ディレクトリ

ファイル/ディレクトリが読み取り可能か確認する

特定のファイル/ディレクトリを読み取ることが可能か確認する方法を解説します。

この記事のポイント

  • ファイル / ディレクトリの読み取り(アクセス)が可能かを調べる
  • パーミッションのどこを参照して確認しているかが分かる
  • if文などの条件式に組み込む実践的な使い方が分かる

目次

ファイル/ディレクトリへのアクセス権限を確認する

ファイル/ディレクトリへのアクセス権限があるかを確認するには、is_readable関数を使用します。
この関数はファイル、またはディレクトリのパスを渡すと、そのファイルへの読み取り権限があるかを確認することができます。

コード例

is_readable("images/test.jpg");

読み取り可能な場合はtrue、不可の場合、もしくは該当するファイル/ディレクトリが存在しない場合はfalseを返します。

この関数はパーミッションの読み取り権限を調べます。
具体的には、赤字の箇所の「その他」のパーミッションです。

パーミッション表示例

-rwxr--r--@ 1 test user  860 Dec 4 18:44  test.jpg

使用例

次のような4つのファイルとディレクトリに対し、is_readable関数で読み取り可能であるかを確認していきます。

パーミッション表示例

-rwxr--r--+  1 test  user  614041 Jul 13  2017 pic01.jpg
----------+  1 test  user  194785 Jul 13  2017 pic02.jpg
drwxr-xr-x+  2 test  user  64 Dec 13 14:17  temp_dir
drwxr-----+  2 test  user  64 Dec 13 14:18  dont_access_dir

コード例

// ファイル・ディレクトリへのパス
$path1 = 'test/pic01.jpg';
$path2 = 'test/pic02.jpg';
$path3 = 'test/temp_dir';
$path4 = 'test/dont_access_dir';

var_dump( is_readable($path1));
var_dump( is_readable($path2));
var_dump( is_readable($path3));
var_dump( is_readable($path4));

var_dump関数で返り値を出力します。

返り値の出力例

bool(true)
bool(false)
bool(false)
bool(true)

それぞれのファイル/ディレクトリについて読み取りできるか論理値で返ってきました。
実際には、次のようにif文の条件式に組み込むなどをして使用する機会が多いです。

コード例

$path = 'test/pic01.jpg';

if( is_readable($path) ) {
	echo 'こちらのファイルは読み取り可能です。';
} else {
	echo 'こちらのファイルは読み取り不可です。';
}

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。