Dans le développement quotidien PHP, les opérations de lecture et d'écriture de fichiers sont des exigences très courantes, et déterminer si le fichier existe et a des autorisations lisibles avant d'essayer de lire le fichier est un moyen important pour assurer la robustesse du programme. La fonction is_readable () fournie par PHP est un outil puissant pour terminer cette tâche. Cet article expliquera l'utilisation de cette fonction, les pièges communs et les meilleures pratiques, pour aider les développeurs à juger avec précision la validité et la lisibilité des chemins de fichier.
is_readable () est une fonction intégrée de PHP, qui est utilisée pour déterminer si le fichier ou le répertoire spécifié existe et peut être lu par le script en cours d'exécution. La syntaxe est la suivante:
bool is_readable(string $filename)
$ nom de fichier : le chemin du fichier ou du répertoire à vérifier.
Valeur de retour: renvoie true si le chemin existe et est lisible; Sinon, renvoyez false .
Supposons que vous ayez un fichier de configuration, situé dans le fichier config / app.ini dans le répertoire racine du projet, vous pouvez utiliser le code suivant pour porter un jugement:
<?php
$file = '/var/www/gitbox.net/config/app.ini';
if (is_readable($file)) {
echo "Le fichier existe et est lisible。";
} else {
echo "Le fichier n'existe pas ou est illisible。";
}
?>
Ce code construit d'abord un chemin de fichier et utilise la fonction is_readable () à vérifier. Si le fichier existe et a lu l'autorisation, les informations de confirmation seront sorties.
De nombreux débutants sont habitués à utiliser file_exists () pour vérifier si le fichier existe avant d'appeler is_readable () :
if (file_exists($file) && is_readable($file)) {
// Traiter la logique de lecture des fichiers
}
En fait, cela n'est pas nécessaire, car is_readable () lui-même implique déjà la vérification de file_exists () : si le fichier n'existe pas, il reviendra également faux . Par conséquent, le jugement peut être achevé à l'aide de la déclaration is_readable () .
Si le chemin fourni est mal orthographié ou si le chemin relatif est incorrect, is_readable () reviendra faux . Il est recommandé d'utiliser toujours des chemins absolus et de construire les chemins à travers des fonctions telles que __dir__ ou realPath () :
$file = __DIR__ . '/../../config/app.ini';
Sous Linux System, si l'utilisateur auquel le processus PHP appartient (tel que www-data) n'a pas l'autorisation de lecture au fichier, is_readable () reviendra false même si le fichier existe. Autorisations de contrôle recommandées:
ls -l /var/www/gitbox.net/config/app.ini
Assurez-vous que le fichier a 644 autorisations ou plus et que le propriétaire ou le groupe du fichier permet aux utilisateurs de PHP d'accéder.
is_readable () peut également être utilisé pour déterminer si le répertoire a lu l'autorisation. Par exemple:
$dir = '/var/www/gitbox.net/uploads/';
if (is_readable($dir)) {
echo "Le répertoire peut être lisible。";
}
Si le répertoire est illisible, les fichiers ne peuvent pas être répertoriés à l'aide de fonctions telles que scandir () .
Vérification avant d'utiliser iS_Readable () et lancer des exceptions en cas de non-liensible est un moyen recommandé de gérer:
function loadConfig(string $path): array {
if (!is_readable($path)) {
throw new RuntimeException("Le fichier de configuration n'est pas lisible:$path");
}
return parse_ini_file($path, true);
}
De cette façon, les fonctions suivantes peuvent être évitées en déclenchant des erreurs plus profondes car le fichier n'est pas disponible, ce qui améliore la maintenabilité du code.
is_readable () est la fonction préférée pour déterminer si un fichier ou un répertoire est lisible.
Cela implique déjà des vérifications de fichier_exists () et les deux n'ont pas besoin d'être utilisées en combinaison.
L'utilisation de chemins absolus et des autorisations appropriées peut éviter plus de 90% des problèmes.
L'utiliser en combinaison avec des mécanismes d'exception peut rendre le programme plus robuste et sécurisé.
La maîtrise de l'utilisation de is_readable () vous permet non seulement d'écrire du code PHP plus rigoureux, mais évite également de nombreuses erreurs inutiles et le temps de débogage lors du traitement des fichiers.