Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

Mit PHP prüfen ob Datei oder ein Verzeichnis existiert

Sie befinden sich: Home > Php Tutorial > Mit PHP prüfen ob Datei...

Mit PHP prüfen ob Datei oder ein Verzeichnis existiert


Eintrag am:  18.12.2022
Hits / Besucher:  2391
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Wer mit PHP Dateien verarbeitet, muss vorher oft wissen, ob eine bestimmte Datei oder ein Verzeichnis überhaupt vorhanden ist. Genau dafür gibt es die Funktion file_exists(). Sie prüft, ob unter dem angegebenen Pfad eine Datei oder ein Ordner existiert und liefert true oder false zurück.

Syntax und Parameter

Die Funktion erwartet genau einen Parameter: den Pfad als String.

file_exists(string $filename): bool

Der Parameter $filename kann ein relativer oder absoluter Pfad sein. Die Funktion gibt true zurück, wenn die Datei oder das Verzeichnis existiert, und false, wenn nicht.

Einfaches Beispiel

Das folgende Beispiel zeigt die grundlegende Verwendung von file_exists(), um zu prüfen, ob eine Textdatei vorhanden ist.

<?php

$dateiname = "meineDatei.txt";

if (file_exists($dateiname)) {
echo "Die Datei $dateiname existiert.";
} else {
echo "Die Datei $dateiname existiert nicht.";
}
?>

Existiert die Datei meineDatei.txt im selben Verzeichnis wie das Script, gibt file_exists() den Wert true zurück und die erste Meldung erscheint. Andernfalls liefert die Funktion false und der else-Zweig wird ausgeführt.

Unterschied zwischen file_exists(), is_file() und is_dir()

Ein häufiger Stolperstein: file_exists() gibt auch dann true zurück, wenn der Pfad auf ein Verzeichnis zeigt. Wer gezielt nur Dateien oder nur Verzeichnisse prüfen möchte, sollte stattdessen is_file() oder is_dir() verwenden.

<?php

$pfad = "uploads";

if (is_dir($pfad)) {
echo "Es handelt sich um ein Verzeichnis.";
} elseif (is_file($pfad)) {
echo "Es handelt sich um eine Datei.";
} else {
echo "Der Pfad existiert nicht.";
}
?>

Mit is_file() lässt sich sicherstellen, dass es sich wirklich um eine Datei handelt. is_dir() erkennt ausschließlich Verzeichnisse. Beide Funktionen geben ebenfalls false zurück, wenn der Pfad nicht existiert.

Praxisbeispiel: Datei nur anlegen, wenn sie fehlt

In der Praxis wird file_exists() oft eingesetzt, bevor eine Datei erstellt oder gelesen wird. So lässt sich vermeiden, dass vorhandene Daten versehentlich überschrieben werden.

<?php

$logDatei = "logs/fehler.log";

if (!file_exists($logDatei)) {
/* Datei existiert noch nicht, also anlegen */
file_put_contents($logDatei, "");
echo "Log-Datei wurde erstellt.";
} else {
echo "Log-Datei ist bereits vorhanden.";
}
?>

Hier wird die Log-Datei nur dann neu erstellt, wenn sie noch nicht vorhanden ist. Das schützt bestehende Einträge vor versehentlichem Löschen.

Caching-Verhalten beachten

PHP speichert das Ergebnis von file_exists() intern im sogenannten Stat-Cache. Wenn sich der Zustand einer Datei während der Laufzeit des Scripts ändert, zum Beispiel weil ein anderer Prozess die Datei löscht, kann file_exists() trotzdem noch true liefern. Um den Cache zu leeren, hilft ein Aufruf von clearstatcache().

<?php

$datei = "temp/cache.tmp";

if (file_exists($datei)) {
unlink($datei);
}

/* Cache leeren, damit der neue
Zustand korrekt erkannt wird */
clearstatcache();

if (!file_exists($datei)) {
echo "Datei wurde erfolgreich entfernt.";
}
?>

Besonders bei länger laufenden Scripts oder in Schleifen, die Dateien anlegen und löschen, ist dieser Punkt wichtig. Ohne clearstatcache() können veraltete Ergebnisse auftreten.

Zusammenfassung

file_exists() ist die einfachste Möglichkeit, in PHP zu prüfen, ob ein Pfad existiert. Für eine genauere Unterscheidung stehen is_file() und is_dir() zur Verfügung. Bei zeitkritischen Operationen sollte der Stat-Cache mit clearstatcache() geleert werden, damit das Ergebnis den tatsächlichen Dateisystem-Zustand widerspiegelt.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.