Filesystem 函数
在线手册:中文 英文
PHP手册

is_readable

(PHP 4, PHP 5)

is_readable判断给定文件名是否可读

说明

bool is_readable ( string $filename )

如果由 filename 指定的文件或目录存在并且可读则返回 TRUE

记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制。

Example #1 is_readable() 例子

<?php
$filename 
'test.txt';
if (
is_readable($filename)) {
    echo 
'The file is readable';
} else {
    echo 
'The file is not readable';
}
?>

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 Supported Protocols and Wrappers以获得支持 stat() 系列函数功能的包装器列表。

参见 is_writable()file_exists()fgets()

参数

filename

Path to the file.

返回值

Returns TRUE if the file or directory specified by filename exists and is readable, FALSE otherwise.

范例

Example #2 is_readable() example

<?php
$filename 
'test.txt';
if (
is_readable($filename)) {
    echo 
'The file is readable';
} else {
    echo 
'The file is not readable';
}
?>

错误/异常

失败时抛出E_WARNING警告.

注释

Keep in mind that PHP may be accessing the file as the user id that the web server runs as (often 'nobody'). Safe mode limitations are not taken into account before PHP 5.1.5.

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 Supported Protocols and Wrappers以获得支持 stat() 系列函数功能的包装器列表。

Note:

The check is done using the real UID/GID instead of the effective one.

参见


Filesystem 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: 判断给定文件名是否可读

用户评论:

pgl at yoyo dot org (31-Jul-2009 03:13)

Note that is_readable() will return false for streams, eg, php://stdin.

jascha át gmx dót com (07-Nov-2006 02: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 05: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 05: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.

(27-Jul-2005 03:08)

Sometimes in situations where file_exists fails (returns false even though the file does exist) stat will work.