PHP/Zugriff auf das Dateisystem
Mit PHP kann bequem auf das Dateisystem zugegriffen werden. Mit Hilfe von Dateien können Daten dauerhaft gespeichert, Grundeinstellungen und Stammdaten gelesen und damit sogar eine Datenbank ersetzt werden. Da Zugriffe auf das Dateisystem des Servers eine Sicherheitslücke darstellen, sind zusätzliche Kenntnisse über die Funktionen und mögliche Gegenmassnahmen notwendig. Auch wenn Nutzern kein direkter Zugriff gegeben werden soll, gibt es sinnvolle Anwendungen.
- Protololldateien schreiben: Protokollieren der Nutzerbewegungen in eigenen Dateien.
- Formulardaten ablegen: Formulare als Dateien speichern.
- Tipp des Tages: Einbau dynamischer Daten in die Website, die andere als Textdatei abgelegt haben.
Die Arbeit mit Dateien erfolgt nach einem einfachen Schema. Zuerst wird eine Datei geöffnet, dann werden Daten herausgelesen oder hineingeschrieben, dann wird die Datei wieder geschlossen. Wenn eine Datei nicht vorhanden ist, kann sie beim Öffnen automatisch angelegt werden. Ist eine Datei geöffnet, so kann der gesamte Inhalt in eine Variable übertragen werden - besser ist allerdings die Verwendung eines Dateizeigers. Dieser markiert eine bestimmte Position in der Datei und steuert die Ausgabe der enthaltenen Daten. PHP kann zwischen Binär- und Textdateien unterscheiden. Textdateien werden im ASCII-Modus geöffnet und es bieten sich besondere Bearbeitungsfunktionen für sie an.
Um mit Dateien arbeiten zu können, werden sogenannte Datei-IDs oder Handles erzeugt; ein Handle ist ein Verweis auf eine Datei. Funktionen zur Dateimanipulation nutzen Handles zur Zugriffssteuerung. Das ist einfacher als immer weider den vollständigen Pfad zu einer Datei anzugeben.
Als Dateiname kann ausser einem physischen Pfad auf einem Unix-System auch eine HTTP- oder FTP-Adresse genutzt werden. Dann wird eine Verbindung zu einem Webserver ("http:") oder einem FTP-Server ("ftp:") aufgebaut. FTP kann lesen und schreiben, HTTP kan-Verbindungen können natürlich nur lesen.
Funktionsübersicht
Folgende Tabelle zeigt nur die Funktionen, die mit Dateien umgehen oder im Zusammenhang mit Dateien benötigt werden. Funktionen zur Bearbeitung von Verzeichnissen finden sich unter ...
Funktion | Beschreibung |
---|---|
basename | Extrahiert den Namen einer Datei aus einer vollständigen Pfadangabe. |
chgrp | Wechselt die Rechte an einer Datei für eine bestimmte Benutzergruppe. |
chmod | Ändert die Rechte an einer Datei für den aktuellen Benutzer. |
chown | Wechselt den Eigentümer einer Datei. |
clearstatcache | Löscht den Status-Cache. Viele Funktionen ermitteln Daten über Dateien und legen diese in einem Speicher in PHP ab, damit spätere Zugriffe schneller ablaufen. Um die Daten zu aktualisieren muss dieser Status-Cache gelöscht werden. |
copy | Kopiert eine Datei. |
dirname | Extrahiert den Verzeichnisnamen aus einer vollständigen Pfadangabe. Diese Funktion ist nicht "intelligent" - sie extrahiert einfach den letzten Teil einer Zeichenkette hinter dem schliessenden Schrägstrich, prüft aber nicht, ob es sich dabei um zufällig vorhandene Schrägstriche oder einen echten Pfad handelt. Es ist also gleichgültig, ob ein solcher Pfad überhaupt vorhanden ist. |
disk_free_space | Gibt den freien Speicherplatz eines Laufwerks an. |
fclose | Schliesst das Handle zu einer Datei. |
feof | Testet, ob der Dateizeiger am Dateiende (engl. end of file) steht. |
fgetc | Holt ein einzelnes Zeichen von der Position des Dateizeigers. |
fgetcsv | Holt eine Zeile aus einer Textdatei und untersucht nach kommagetrennten Feldern (CSV-Datei). |
fgets | Liest eine bestimmte Zeichenanzahl oder bis zum Zeilenende einer Textdatei. Als Zeilenende wird jeder Zeilenumbruch "\n" erkannt. |
fgetss | Liest eine Zeile aus einer Textdatei und analysiert HTML-Tags. |
file | Liest die gesamte Datei in ein Array ein. Als Trennzeichen werden die Zeilenumbrüche verwendet, die dabei erhalten bleiben. |
file_exists | Prüft, ob eine Datei vorhanden ist. |
fileatime | Gibt das Datum des letzten Zugriffs auf eine Datei an. |
filectime | Gibt das Datum einer Datei an. |
filegroup | Holt die Benutzergruppe, die die Datei besitzt. |
fileinode | Holt die Indode-Information über eine Datei. |
filemtime | Gibt das Datum zurück, an dem die Datei letztmals geändert wurde. |
fileowner | Ermittelt den Namen des Besitzers der Datei. |
fileperms | Holt die Dateiattribute. |
filesize | Gibt die Dateigrösse in Byte zurück. |
filetype | Gibt den Dateityp als Zeichenkette zurück. |
flock | Sperrt die Datei gegen weitere Zugriffe. |
fopen | Öffnet eine Datei oder einen URL. Das zurückgegebene Handle wird von anderen Funktionen verwendet, um auf die Datei zuzugreifen. |
fpassthru | Liest Daten beginnend beim aktuellen Dateizeiger aus einer Datei und sendet sie direkt zum Webbrowser. |
fputs | Schreibt Daten an die Stelle des Dateizeigers in eine Datei. |
fread | Liest Binärdaten aus einer Datei. |
frewind | Setzt den Dateizeiger an den Dateianfang. |
fseek | Setzt den Dateizeiger auf eine bestimmte Position in einer Datei. |
ftell | Gibt die aktuelle Position des Dateizeigers zurück. |
fwrite | Schreibt Binärdaten in eine Datei. |
glob | Findet Pfadnamen aufgrund eines Musters und gibt ein Array mit den Fundstellen zurück. |
set_file_buffer | Stellt den Puffer für einen Dateizeiger ein. |
is_dir | Ermittelt, ob der Name ein Verzeichnis ist. |
is_executable | Ermittelt, ob die Datei ausführbar ist. |
is_file | Ermittelt, ob es sich um eine reguläre Datei handelt. |
is_link | Ermittelt, ob es sich um einen Link (Verweis) handelt. |
is_readable | Ermittelt, ob die Datei lesbar ist. |
is_writeable | Ermittelt, ob in die Datei geschrieben werden kann. |
link | Erzeugt einen Link (Verweis). |
linkinfo | Holt Informationen über einen Link (Verweis). |
pathinfo | Informationen über einen Pfad. |
pclose | Schliesst einen Prozess-Dateizeiger. |
popen | Öffnet einen Prozess-Dateizeiger. |
readfile | Liest eine Datei und sendet sie an den Webbrowser. |
readlink | Gibt das Ziel eines Links (Verweis) zurück. |
realpath | Der tatsächliche (physische) Pfad zu einer Datei. |
rename | Benennt eine Datei um. |
rmdir | Entfernt ein Verzeichnis. |
stat | Gibt Informationen über eine Datei zurück. |
lstat | Gibt Informationen über einen Link (Verweis) zurück. |
symlink | Erzeugt einen Link (Verweis). |
tempname | Erzeugt einen eindeutigen, einmaligen Namen. |
touch | Setzt das Datum der letzten Veränderung. |
umask | Änderung der aktuellen umask. |
unlink | Löscht einen Verweis oder eine Datei. |