file_exists() oder is_readable()
Welche sollten Sie verwenden, wenn Sie möchten, um eine PHP-Datei?
if(file_exists($file) require "$file";
oder
if(is_readable($file) require "$file";
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Welche sollten Sie verwenden, wenn Sie möchten, um eine PHP-Datei?
if(file_exists($file) require "$file";
oder
if(is_readable($file) require "$file";
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies hängt davon ab, wenn Sie wissen möchten, ob nur eine Datei oder ein Verzeichnis vorhanden ist, oder wenn entweder Sie ist in Ordnung, und wenn Sie brauchen, um zu überprüfen, ob lesbar oder nicht.
Manchmal nur darum, die Datei und/oder Verzeichnis vorhanden ist, und nicht Lesen müssen, manchmal müssen Sie auch Lesen.
Optionen
file_exists()
Prüft, ob ein Datei oder Verzeichnis vorhanden ist.
Wenn Sie explizit nur wissen willst, ob ein Datei vorhanden ist, wird diese return false positives, da gibt true zurück, wenn es ein Verzeichnis ist.
is_readable()
Sagt, ob ein Datei oder Verzeichnis existiert und lesbar ist.
Wenn Sie explizit nur wissen willst, ob ein Datei lesbar ist, ist dies wahrscheinlich wieder false positives, da könnte true zurück, wenn es ein Verzeichnis ist.
Zusätzliche Optionen, die Sie haben nicht erwähnt, aber wahrscheinlich benötigen:
is_file()
Sagt, ob es existiert und ist eine reguläre Datei (kein Verzeichnis).
is_dir()
Sagt, ob es existiert und ist ein Verzeichnis (nicht eine Datei).
Lösung & Antwort -
Wenn Sie überprüfen möchten, vorhanden ist und:
is_file()
is_dir()
file_exists()
Wenn Sie überprüfen möchten, existiert und ist lesbar:
is_file()
undis_readable()
is_dir()
undis_readable()
is_readable()
Brauchen Sie nicht zu verwenden
file_exists()
undis_readable()
zusammen, weilis_readable()
wird auch überprüft, obfile_exists()
.Pairing
is_readable()
mit entwederis_file()
oderis_dir()
ist nur zu prüfen, ob lesbar ist speziell auf eine Datei oder nur speziell auf ein Verzeichnis nur.Sich auf verlangen
Als mit den meisten PHP-und "was ist der beste Ansatz/Funktion/etc." - es hängt vom Szenario ab.
Sich auf genau
require
zu verwalten, wenn das system hängt oder nicht, ist nicht wirklich sinnvoll. Stellen Sie sich die gewünschte Datei ist nicht vorhanden, so dass PHP halte, da verlangen, schlägt fehl, aber die Datei ist einfach ein Artikel, Bild oder user-avatar - das tun Sie wirklich nicht wollen, um zu dienen, Website-navigation, logo, links, alle Arten von Seite text und Inhalt, nur wegen einem fehlenden Artikel Bild?ENTSCHEIDEND:
Wenn die Datei ist eine Datenbank-connection-Klasse, die es ermöglicht das servieren der gesamte Inhalt der Seite, dann wird die Datei nicht da ist muss wahrscheinlich ein system-Stillstand.
Natürlich, dann sollten Sie haben eine Art exit-Strategie, wie servieren eine 404-Seite, oder eine Fehlermeldung - "tut mir Leid es war ein Fehler, wir werden das prüfen", usw.
NICHT WICHTIG:
Manchmal ist es auch gültig für die Datei nicht existiert oder zumindest nicht schädlich für den rest der Anwendung.
Wie, wenn eine Bilddatei nicht vorhanden ist, könnten Sie dienen eine Nachricht oder ein Standard-Bild, wie ein user-avatar wird nur ein Standard-avatar, wenn die ihrigen nicht gefunden.
Die Antwort ist: is_readable().
http://us3.php.net/manual/en/function.is-readable.php
Wenn Ihr zu
require
eine Datei, gibt es keinen Punkt in Fehler zu überprüfen. Der Punkt mitrequire
stattinclude
ist hault der Skriptausführung, wenn die Datei nicht vorhanden ist.Wenn Sie nicht kümmern, wenn die Datei vorhanden ist, verwenden Sie einfach
include
.require
wird verwendet, um sicherzustellen, dass die Datei vorhanden ist, bevor Sie fortfahren. Wenn die Datei erforderlich, Sie wirft einen Fehler wenn die Datei nicht da ist. Wenn die Datei noch nicht entscheidend auf die Seite, und verwenden Sie danninclude
.weil is_readable gilt für Verzeichnisse, die zu