php[tek] 2018 : Call for Speakers

is_readable

(PHP 4, PHP 5, PHP 7)

is_readableファイルが存在し、読み込み可能であるかどうかを知る

説明

bool is_readable ( string $filename )

ファイルが存在し、読み込み可能であるかどうかを調べます。

パラメータ

filename

ファイルへのパス。

返り値

filename で指定したファイルあるいはディレクトリが存在し、 それが読み込み可能であれば TRUE、それ以外の場合に FALSE を返します。

例1 is_readable() の例

<?php
$filename 
'test.txt';
if (
is_readable($filename)) {
    echo 
'このファイルは読み込み可能です';
} else {
    echo 
'このファイルは読み込み可能ではありません';
}
?>

エラー / 例外

失敗したときは E_WARNING が発生します。

注意

PHP は、Web サーバーを実行しているユーザー ID (たいていは 'nobody') でファイルにアクセスすることを覚えておいてください。 PHP 5.1.5 より前のバージョンでは、セーフモードの制限は働きません。

注意: この関数の結果は キャッシュされます。詳細は、clearstatcache() を参照してください。

ヒント

PHP 5.0.0 以降、この関数は、 何らかの URL ラッパーと組合せて使用することができます。 どのラッパーが stat() ファミリーをサポートしているかを調べるには サポートするプロトコル/ラッパー を参照してください。

注意:

チェックは、実効ユーザーではなく実ユーザーの UID/GID で行います。

この関数は、ディレクトリに対しても TRUE を返すかもしれません。 ファイルとディレクトリを区別するには is_dir() を使いましょう。

参考

  • is_writable() - ファイルが書き込み可能かどうかを調べる
  • file_exists() - ファイルまたはディレクトリが存在するかどうか調べる
  • fgets() - ファイルポインタから 1 行取得する

add a note add a note

User Contributed Notes 4 notes

up
6
jo at durchholz dot org
11 years ago
DrTebi at yahoo dot com is wrong. is_readable() checks whether you can do file_get_contents() or similar calls, no more, no less. If the location given returns a 500 or 403 error, you can still read() that (you'll simply get the error page), but it's still read()able. Using is_readable to check the validity of a URL is simply the wrong function.
up
0
arikan134 at gmail dot com
1 year ago
is readable recursively. Check all sub directories and files readable
<?php
function is_readable_r($dir) {
    if (
is_dir($dir)) {
        if(
is_readable($dir)){
           
$objects = scandir($dir);
            foreach (
$objects as $object) {
                if (
$object != "." && $object != "..") {
                    if (!
is_readable_r($dir."/".$object)) return false;
                    else continue;
                }
            }   
            return
true;   
        }else{
            return
false;
        }
       
    }else if(
file_exists($dir)){
        return (
is_readable($dir));
       
    }
}

?>
up
-1
pgl at yoyo dot org
8 years ago
Note that is_readable() will return false for streams, eg, php://stdin.
up
-17
Anonymous
12 years ago
Sometimes in situations where file_exists fails (returns false even though the file does exist) stat will work.
To Top