is_readable
(PHP 4, PHP 5)
is_readable — Определяет существование файла и доступен ли он для чтения
Описание
$filename
)
Возвращает TRUE
, если файл существует и доступен для чтения.
Список параметров
-
filename
-
Путь к файлу.
Возвращаемые значения
Возвращает TRUE
, если файл или директория, указанная в
filename
существует и доступна для чтения,
иначе возвращает FALSE
.
Примеры
Пример #1 is_readable() example
<?php
$filename = 'test.txt';
if (is_readable($filename)) {
echo 'Файл доступен для чтения';
} else {
echo 'Файл недоступен для чтения';
}
?>
Ошибки
В случае неудачного завершения работы генерируется ошибка уровня E_WARNING
.
Примечания
Не забывайте, что PHP может обращаться к файлам от имени пользователя, от которого запущен веб-сервер (часто 'nobody'). До версии PHP 5.1.5 ограничения безопасного режима не принимались во внимание.
Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().
Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обертками url. Список оберток, поддерживаемых семейством функций stat(), смотрите в Поддерживаемые протоколы и обработчики (wrappers).
Замечание:
Проверка производится с использованием реальных UID/GID вместо эффективных.
Эта функция может возвращать TRUE
для директорий. Чтобы отличить файл
от директории можно воспользоваться функцией is_dir().
Смотрите также
- is_writable() - Определяет, доступен ли файл для записи
- file_exists() - Проверяет наличие указанного файла или каталога
- fgets() - Читает строку из файла
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с файловой системой
- Функции для работы с файловой системой
- basename
- chgrp
- chmod
- chown
- clearstatcache
- copy
- delete
- dirname
- disk_free_space
- disk_total_space
- diskfreespace
- fclose
- feof
- fflush
- fgetc
- fgetcsv
- fgets
- fgetss
- file_exists
- file_get_contents
- file_put_contents
- file
- fileatime
- filectime
- filegroup
- fileinode
- filemtime
- fileowner
- fileperms
- filesize
- filetype
- flock
- fnmatch
- fopen
- fpassthru
- fputcsv
- fputs
- fread
- fscanf
- fseek
- fstat
- ftell
- ftruncate
- fwrite
- glob
- is_dir
- is_executable
- is_file
- is_link
- is_readable
- is_uploaded_file
- is_writable
- is_writeable
- lchgrp
- lchown
- link
- linkinfo
- lstat
- mkdir
- move_uploaded_file
- parse_ini_file
- parse_ini_string
- pathinfo
- pclose
- popen
- readfile
- readlink
- realpath_cache_get
- realpath_cache_size
- realpath
- rename
- rewind
- rmdir
- set_file_buffer
- stat
- symlink
- tempnam
- tmpfile
- touch
- umask
- unlink
Коментарии
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.
Note that is_readable() will return false for streams, eg, php://stdin.
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));
}
}
?>