Heim  >  Artikel  >  Backend-Entwicklung  >  Warum hat die PHP-Funktion file_exists() keine Wirkung?

Warum hat die PHP-Funktion file_exists() keine Wirkung?

怪我咯
怪我咯Original
2017-07-11 10:54:342710Durchsuche

file_exists – Prüft, ob die Datei oder das Verzeichnis existiert, gibt TRUE zurück, wenn die angegebene Datei oder das angegebene Verzeichnis existiert, andernfalls wird FALSE zurückgegeben. Dieser Artikel ist eine detaillierte Analyse und Einführung in die ungültige Lösung von file_exists in PHP. Freunde in Not können sich auf

beziehen Methode 1: Wenn laut offiziellem Handbuch die Einstellungen für den abgesicherten Modus des PHP-Tutorials zu streng sind, kommt es zu einer Situation wie dieser: Obwohl die Datei tatsächlich existiert, wird fälschlicherweise gemeldet, dass die Datei nicht existiert.

Da wir die php.ini auf der Serverseite nicht kontrollieren können, können wir den abgesicherten Modus bei Verwendung von ini_set() nicht deaktivieren. Wir können uns nur mit der nächstbesten Lösung zufrieden geben und eine finden zuverlässigere und sicherere Erkennungsmethode, um zu überprüfen, ob die Datei vorhanden ist. Dies können wir mit Hilfe von $_server['document_root'] erreichen. $_server['document_root'] gibt das Stammverzeichnis der Website zurück. Das letzte Unterverzeichnis des Verzeichnisses enthält nicht die Verzeichniskennung „/“, wie zum Beispiel:
d:/www/htdocs
Mit dem Stammverzeichnis und dem Pfad der Datei, die erkannt werden muss, erhalten wir einen absoluten Pfad, und PHP kann die Funktion file_exists() erfolgreich verwenden, um ihn zu erkennen. Wir müssen nur die erste Zeile des obigen Codes ändern (beachten Sie, dass wir das Symbol „/“ vor config.php hinzugefügt haben):
$file=$_server['document_root']."/config.php " ;
Auf diese Weise ist die Ausführung des Codes sehr zuverlässig und es treten keine unerwarteten Ergebnisse auf.
Die obige Methode ist auch auf die zugehörige Erkennungsfunktion für Verzeichnisse (is_dir()) oder Dateien (is_file()) anwendbar, mit der erkannt werden kann, ob das durch Sicherheit geschützte Verzeichnis oder die Datei vorhanden ist.

Abschließend noch nebenbei: Sie müssen $_server['document_root' nicht hinzufügen, wenn Sie auf Dateien verweisen, die durch die speziellen Einstellungen von PHP geschützt sind (include und require) ] Pfade, da sie laut PHP-Dokumentation in Anführungszeichen gesetzt werden dürfen.

Methode 2: In meinem Fall wurde die Datei zwischen Windows und Linux hin und her verschoben. Dadurch werden die Zugriffsberechtigungen von Dateien und Verzeichnissen unter Linux geändert, sodass niemand außer dem Besitzer der Datei Zugriffsberechtigungen hat. Die Verwendung von chmod -r 755 xxx/* löste das Problem.

Das obige ist der detaillierte Inhalt vonWarum hat die PHP-Funktion file_exists() keine Wirkung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn