PHP/Zugriff auf das Dateisystem

Aus Mikiwiki
< PHP
Zur Navigation springen Zur Suche springen

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.