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)); // bool(true)
var_dump( is_readable($path2)); // bool(false)
var_dump( is_readable($path3)); // bool(false)
var_dump( is_readable($path4)); // bool(true)

それぞれのファイル/ディレクトリについて、読み取りできるかが論理値で返ってくるのでvar_dump関数で出力しながら確認しています。
先述のパーミッションと照らし合わせながら確認していくと、ファイルとディレクトリでそれぞれ読み取り可能なパーミッションが異なっていることが分かります。

is_readable関数を実際に使う場面では、以下のようにif文の条件式に組み込んで使用する機会が多いです。

コード例

$path = 'test/pic01.jpg';

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