is_readable

(PHP 4, PHP 5, PHP 7, PHP 8)

is_readablePrüft, ob eine Datei existiert und lesbar ist

Beschreibung

function is_readable(string $filename): bool

Gibt true zurück, wenn die Datei existiert und lesbar ist.

Parameter-Liste

filename

Pfad zur Datei.

Rückgabewerte

Gibt true zurück, wenn die Datei oder das Verzeichnis (angegeben durch filename) existiert und lesbar ist, sonst false.

Fehler/Exceptions

Im Fehlerfall wird eine E_WARNING ausgegeben.

Beispiele

Beispiel #1 is_readable()-Beispiel

<?php
$filename
= 'test.txt';
if (
is_readable($filename)) {
echo
'Die Datei ist lesbar';
} else {
echo
'Die Datei ist nicht lesbar';
}
?>

Anmerkungen

Bedenken Sie, dass PHP mit der Benutzer-ID auf die Datei zugreift, unter der der Webserver läuft (oftmals ist dies 'nobody').

Hinweis: Die Ergebnisse dieser Funktion werden zwischengespeichert. Weitere Details sind bei clearstatcache() zu finden.

Tipp

Seit PHP 5.0.0 kann diese Funktion mit einigen URL-Wrappern benutzt werden. Schauen Sie in der Liste unter Unterstützte Protokolle und Wrapper nach, welcher Wrapper die Funktionalität von stat() unterstützt.

Hinweis:

Die Prüfung wird mit der echten UID/GID anstelle der effektiven ID ausgeführt.

Diese Funktion kann true für Verzeichnisse zurück liefern. Mittels is_dir() kann zwischen Dateien und Verzeichnissen unterschieden werden.

Siehe auch

  • is_writable() - Prüft, ob in eine Datei geschrieben werden kann
  • file_exists() - Prüft, ob eine Datei oder ein Verzeichnis existiert
  • fgets() - Liest die Zeile von der Position des Dateizeigers

add a note

User Contributed Notes 5 notes

up
9
jo at durchholz dot org
20 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
1
arikan134 at gmail dot com
10 years 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
16 years ago
Note that is_readable() will return false for streams, eg, php://stdin.
up
0
anrdaemon at yandex dot ru
4 days ago
Do note that is_readable/is_writable evaluates permissions in an attempt to produce the result.

This WILL fail in certain situations, while the file is actually accessible to the user, but manual evaluation fails to connect the dots.

The only trusted way to detect if a file is readable is to actually open it for reading. The only trusted way to detect if a file is writable is to actually open it for writing. And catche the error in case of failure.
up
0
johninen at gmail dot com
11 months ago
This will return false on urls, even if file_get_contents() reads them. So, only for files.
To Top