PHP/Dateioperatoren

Aus Mikiwiki
< PHP
Version vom 10. Januar 2009, 11:20 Uhr von Michi (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Zur effektiven Arbeit mit Dateien sind Funktionen zum Verschieben, Löschen und Umbenennen notwendig. Die einfachen Dateifunktionen setzen voraus, dass die Namen der zu behandelnden Dateien bekannt sind. Vollständige oder relative Pfadangaben können nach Bedarf eingesetzt werden.

Funktion Beschreibung
copy Kopiert eine Datei. Im Erfolgsfall wird "TRUE" zurückgegeben, sonst "FALSE". Platzhalterzeichen sind nicht erlaubt.
rename Benennt eine Datei um oder verschiebt sie. Stimmt der Pfad von Quelle und Ziel nicht überein, so wird die Datei verschoben, auch wenn der Dateiname gleich bleibt. Im Erfolgsfall wird "TRUE" zurückgegeben, sonst "FALSE".
unlink Löscht eine Datei. Im Erfolgsfall wird "TRUE" zurückgegeben, sonst "FALSE".

Das folgende Beispiel legt zu einer Datei eine Sicherheitskopie an und ändert dabei die Dateinamenserweiterung. Zur Ausführung des Skripts werden Schreibrechte für den Webnutzer (www-data) im Verzeichnis "logdata" benötigt. Die Funktion "copy" gibt "TRUE" zurück, wenn der Kopiervorgang erfolgreich war, andernfalls wird "FALSE" zurückgegeben. PHP gibt ausserdem eine Warnung aus, die durch Voranstellen des Zeichens "@" vor den Funktionsaufruf unterdrückt werden kann.

<?php
$path = "data";
$file = "muster.txt";
echo "<p>Kopiere Datei <b>$file</b></p>\n";
if (!@copy("$path/$file", "logdata/$file.bak"))
{ 
  echo "<p>Datei $file nicht gefunden.</p>\n";
}
else 
{
  echo "<p>Datei $file erfolgreich gesichert.</p>\n";
}
?>

Kopiere Datei muster.txt

Datei muster.txt erfolgreich gesichert.

Auch beim Umbenennen und Verschieben von Dateien ist zu beachten, dass der Nutzer im Zielverzeichnis Schreibrechte benötigt. Damit das Skript mehrfach ausgeführt werden kann, werden die Änderungen am Schluss des folgenden Skripts gleich wieder rückgängig gemacht.

<?php
$file = "data/muster.txt";
echo "<p>Verschiebe Datei: <b>$file</b></p>\n";
$new  = "data/muster.txt.bak";
if (!rename($file, $new)) 
{ 
  echo "<p>Datei $file nicht gefunden</p>\n";
}
else 
{
  echo "<p>Datei $file erfolgreich nach $new verschoben</p>\n";
}
## Dieser Abschnitt stellt den ursprünglichen Zustand wieder her,
## damit das Skript mehrfach ausgeführt werden kann:
copy ($new, $file);
?>

Verschiebe Datei: data/muster.txt

Datei data/muster.txt nicht gefunden