Note that is_readable() will return false for streams, eg, php://stdin.
is_readable
(PHP 4, PHP 5)
is_readable — Indique si un fichier existe et est accessible en lecture
Description
Indique si un fichier existe et est accessible en lecture.
Liste de paramètres
- filename
-
Chemin vers le fichier.
Valeurs de retour
Retourne TRUE si le fichier ou le dossier spécifié par filename existe et est accessible en lecture, FALSE sinon.
Exemples
Exemple #1 Exemple avec is_readable()
<?php
$filename = 'test.txt';
if (is_readable($filename)) {
echo 'Le fichier est accessible en lecture';
} else {
echo 'Le fichier n\'est pas accessible en lecture !';
}
?>
Notes
N'oubliez pas que PHP accède aux fichiers avec les mêmes autorisations que l'utilisateur qui fait tourner le serveur web (souvent, c'est 'nobody', personne). Les limitations du safe mode ne sont prises en compte qu'à partir de PHP 5.1.5.
Note: Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() pour plus de détails.
Depuis PHP 5.0.0, cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Liste des protocoles supportés pour une liste des protocoles supportant la famille de fonctionnalités de stat().
Note:
La vérification est effectuée en utilisant l'UID/GID réel au lieu de l'effectif.
Voir aussi
- is_writable() - Indique si un fichier est accessible en écriture
- file_exists() - Vérifie si un fichier ou un dossier existe
- fgets() - Récupère la ligne courante sur laquelle se trouve le pointeur du fichier
is_readable
31-Jul-2009 04:13
07-Nov-2006 03: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)
30-Jan-2006 06: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.
13-Oct-2005 06: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.
Sometimes in situations where file_exists fails (returns false even though the file does exist) stat will work.
