Arbeiten mit dem Dateisystem in PHP: von den Grundlagen zu realen Projekten
\n\nDie Arbeit mit dem Dateisystem ist eine der Kernaufgaben eines jeden Webentwicklers. PHP bietet dafür einen leistungsstarken Satz eingebauter Funktionen, mit denen Sie Dateien erstellen, lesen, bearbeiten und löschen sowie Verzeichnisse verwalten können. In diesem Artikel betrachten wir praktische Beispiele, die Ihnen helfen, die Arbeit mit Dateien in PHP zu meistern und dieses Wissen in realen Projekten anzuwenden.
\n\nUnabhängig davon, ob Sie ein Logging-System, einen Datei-Uploader erstellen oder einfach nur Benutzerdaten speichern, ist das Verständnis der Grundlagen des Dateisystems in PHP eine unverzichtbare Fähigkeit. Kommen wir zur Praxis.
\n\nGrundlegende Funktionen für die Dateiarbeit
\n\nPHP bietet mehrere Möglichkeiten zur Interaktion mit Dateien. Die beliebtesten sind die Verwendung von fopen, fwrite, fread und den High-Level-Funktionen file_get_contents und file_put_contents. Betrachten wir sie anhand von Beispielen.
Datei erstellen und beschreiben
\n\nVerwenden Sie zum Erstellen einer Datei und zum Schreiben in diese die Funktion fopen mit dem Modus 'w' (Schreiben mit Löschen) oder 'a' (Anhängen ans Ende).
<?php\n$filename = 'log.txt';\n$file = fopen($filename, 'w');\n\nif ($file) {\n fwrite($file, "Zeile 1: Schreiben in die Datei\\n");\n fwrite($file, "Zeile 2: Noch ein Eintrag\\n");\n fclose($file);\n echo "Datei erfolgreich erstellt und beschrieben.";\n} else {\n echo "Fehler beim Öffnen der Datei.";\n}\n?>\n\nWenn Sie schnell Daten schreiben möchten, ohne den Zeiger zu verwalten, verwenden Sie file_put_contents:
<?php\n$data = "Neuer Inhalt für die Datei.\\nZweite Zeile.";\nfile_put_contents('data.txt', $data);\necho "Daten geschrieben.";\n?>\n\nDatei lesen
\n\nVerwenden Sie zum zeilenweisen Lesen einer Datei fgets in einer Schleife:
<?php\n$file = fopen('log.txt', 'r');\nif ($file) {\n while (($line = fgets($file)) !== false) {\n echo $line . "<br>";\n }\n fclose($file);\n}\n?>\n\nEine Alternative ist file_get_contents zum Lesen des gesamten Inhalts in einen String:
<?php\n$content = file_get_contents('log.txt');\necho nl2br($content);\n?>\n\nÜberprüfung der Existenz und Eigenschaften von Dateien
\n\nBevor Sie mit einer Datei arbeiten, ist es wichtig sicherzustellen, dass sie existiert und zum Lesen oder Schreiben verfügbar ist. PHP bietet die Funktionen file_exists, is_readable, is_writable und filesize.
Beispiel für eine Dateiprüfung
\n\n<?php\n$file = 'config.php';\n\nif (file_exists($file)) {\n echo "Datei existiert.<br>";\n \n if (is_readable($file)) {\n echo "Datei ist lesbar.<br>";\n echo "Dateigröße: " . filesize($file) . " Bytes.";\n } else {\n echo "Datei existiert, ist aber nicht lesbar.";\n }\n} else {\n echo "Datei nicht gefunden.";\n}\n?>\n\nÜberprüfung des Dateityps
\n\nDie Funktion filetype gibt den Dateityp zurück: 'file', 'dir', 'link' und andere.
<?php\n$path = 'uploads';\nif (file_exists($path)) {\n echo "Typ: " . filetype($path); // gibt 'dir' aus, wenn es ein Ordner ist\n}\n?>\n\nVerzeichnisverwaltung
\n\nDie Arbeit mit Ordnern in PHP ist nicht weniger wichtig. Sie können Verzeichnisse erstellen, löschen und durchsuchen.
\n\nOrdner erstellen und löschen
\n\n<?php\n// Ordner erstellen\nif (!file_exists('backup')) {\n mkdir('backup', 0777, true); // dritter Parameter true — rekursive Erstellung\n echo "Ordner erstellt.";\n}\n\n// Leeren Ordner löschen\nif (file_exists('temp')) {\n rmdir('temp');\n echo "Ordner gelöscht.";\n}\n?>\n\nVerzeichnisinhalt durchsuchen
\n\nDie Funktion scandir gibt ein Array aller Dateien und Ordner zurück.