Note that is_readable() will return false for streams, eg, php://stdin.
is_readable
(PHP 4, PHP 5)
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 で行います。
参考
- is_writable() - ファイルが書き込み可能かどうかを調べる
- file_exists() - ファイルまたはディレクトリが存在するかどうか調べる
- fgets() - ファイルポインタから 1 行取得する
pgl at yoyo dot org
31-Jul-2009 01:13
jascha át gmx dót com
06-Nov-2006 11:58
Safe_mode restrictions ignored means:
cant read by read() so is_readable() = false.
even if safe_mode_include_dir is set and include does works, is_readable() is false to. :(
(php5)
jo at durchholz dot org
30-Jan-2006 02:15
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.
DrTebi at yahoo dot com
13-Oct-2005 03:22
Be careful when using is_readable on symbolic links.
is_readable will return true if the file the symbolic link is pointing to is readable.
The problem is that if the server does NOT allow to follow symbolic links, is_readable will still return true, but e.g. redirecting to the sybolic link will not work. For Apache, make sure that at the server, virtual host configuration level, or inside a directory container you have set
Options +FollowSymLinks
As an example, let's say you have at the document root directory:
index.php -- the script using is_readable
my_linked_page.html -- a regular HTML page
my_link -- a link pointing to my_linked_page.html
Now in index.php:
<?php
if (is_readable('my_link')) {
header('Location: /my_link');
}
?>
If FollowSymLinks is forbidden, this will not work, if allowed, it will.
26-Jul-2005 01:08
Sometimes in situations where file_exists fails (returns false even though the file does exist) stat will work.
