In der täglichen PHP -Entwicklung sind Les- und Schreibvorgänge von Dateien sehr häufige Anforderungen, und festzustellen, ob die Datei vorhanden ist und lesbare Berechtigungen enthält, bevor Sie versuchen, die Datei zu lesen, ist ein wichtiges Mittel, um die Robustheit des Programms zu gewährleisten. Die von PHP bereitgestellte IS_Readable () -Funktion ist ein leistungsstarkes Tool, um diese Aufgabe zu erledigen. In diesem Artikel wird die Verwendung dieser Funktion, gemeinsame Fallstricke und Best Practices erläutert, um Entwicklern dabei zu helfen, die Gültigkeit und Lesbarkeit von Dateipfaden genau zu beurteilen.
is_readable () ist eine integrierte Funktion von PHP, mit der festgestellt wird, ob die angegebene Datei oder das angegebene Verzeichnis existiert und vom aktuell ausgeführten Skript gelesen werden kann. Die Syntax ist wie folgt:
bool is_readable(string $filename)
$ Dateiname : Der Pfad zur überprüfenden Datei oder zum Verzeichnis.
Rückgabewert: Return True , wenn der Pfad existiert und lesbar ist; ansonsten false zurückgeben.
Angenommen, Sie haben eine Konfigurationsdatei, die sich in der Datei config/App.ini im Stammverzeichnis des Projekts befindet, können den folgenden Code verwenden, um ein Urteil zu fällen:
<?php
$file = '/var/www/gitbox.net/config/app.ini';
if (is_readable($file)) {
echo "Die Datei existiert und ist lesbar。";
} else {
echo "Die Datei existiert nicht oder ist unlesbar。";
}
?>
Dieser Code erstellt zunächst einen Dateipfad und verwendet die Funktion is_readable (), um zu überprüfen. Wenn die Datei vorhanden ist und die Berechtigung zur Lesung hat, werden Bestätigungsinformationen ausgegeben.
Viele Anfänger sind daran gewöhnt, File_Exists () zu verwenden, um zu überprüfen, ob die Datei vorhanden ist, bevor Sie is_readable () aufrufen:
if (file_exists($file) && is_readable($file)) {
// Prozessdatei Lesellogik
}
Tatsächlich ist dies unnötig, da is_readable () selbst bereits die Überprüfung von File_Exists () impliziert: Wenn die Datei nicht vorhanden ist, gibt sie auch false zurück. Daher kann das Urteil mit der Anweisung is_readable () abgeschlossen werden.
Wenn der bereitgestellte Pfad falsch geschrieben ist oder der relative Pfad falsch ist, gibt is_readable () false zurück. Es wird empfohlen, immer absolute Pfade zu verwenden und die Pfade durch Funktionen wie __dir__ oder RealPath () zu erstellen:
$file = __DIR__ . '/../../config/app.ini';
Wenn der Benutzer, zu dem der PHP-Prozess gehört (z. B. www-data), nicht die Berechtigung zur Datei gelesen hat, gibt is_readable () falsch , wenn die Datei vorhanden ist. Empfohlene Überprüfungsberechtigungen:
ls -l /var/www/gitbox.net/config/app.ini
Stellen Sie sicher, dass die Datei über 644 oder mehr Berechtigungen verfügt und dass der Dateibesitzer oder die Gruppe PHP -Benutzer zugreifen kann.
is_readable () kann auch verwendet werden, um festzustellen, ob das Verzeichnis die Erlaubnis hat. Zum Beispiel:
$dir = '/var/www/gitbox.net/uploads/';
if (is_readable($dir)) {
echo "Verzeichnis kann lesbar sein。";
}
Wenn das Verzeichnis unleserlich ist, können die Dateien nicht mit Funktionen wie Scandir () aufgeführt werden.
Überprüfen Sie vor der Verwendung von is_readable () und das Werfen von Ausnahmen, wenn nicht lesbar eine empfohlene Handhabung ist:
function loadConfig(string $path): array {
if (!is_readable($path)) {
throw new RuntimeException("Die Konfigurationsdatei ist nicht lesbar:$path");
}
return parse_ini_file($path, true);
}
Auf diese Weise können nachfolgende Funktionen vermieden werden, da die Datei nicht verfügbar ist, was die Wartbarkeit des Codes verbessert.
is_readable () ist die bevorzugte Funktion, um festzustellen, ob eine Datei oder ein Verzeichnis lesbar ist.
Es impliziert bereits File_Exists () -Konüberprüfungen und die beiden müssen nicht in Kombination verwendet werden.
Die Verwendung von absoluten Pfaden und angemessenen Berechtigungen kann über 90% der Probleme vermeiden.
Die Verwendung in Kombination mit Ausnahmemechanismen kann das Programm robuster und sicherer machen.
Wenn Sie die Verwendung von is_readable () beherrschen, können Sie nicht nur strengere PHP -Code schreiben, sondern vermeidet auch viele unnötige Fehler und die Debugging -Zeit bei der Verarbeitung von Dateien.