Nov 04

Auf Shared Hosting-Umgebungen (mehrere Benutzer teilen einen Webserver) ohne suphp oder PHP im CGI-Mode kommt es zu dem Problem, dass der Apache-Webserver und PHP für alle Domains mit einem Benutzer (z.B. “www-data”) ausgeführt werden. Das hat zur Folge, dass von PHP erstellte Dateien dem Apache-Benutzer gehören und meist auch nur der Besitzer (Apache-Benutzer) schreibend darauf zugreifen darf. Shared Hosting-Kunden melden sich aber mit FTP-Accounts an, die ungleich dem des Apache-Benutzers sind. Das führt dazu, dass FTP-Benutzer die vom Apache-Benutzer angelegten Dateien überlicherweise nicht löschen dürfen.

Um die Dateien wieder ändern oder löschen zu können, hat man zwei Möglichkeiten:

  1. Beim Erstellen führt man direkt ein chmod() oder chown() aus und gewährt dem eigenen FTP-Benutzer die notwendigen Berechtigungen.
  2. Man schreibt ein Skript, das diese Aufgabe hinterher ausführt und ruft dieses mit einem Browser auf.

Ein derartiges Skript könnte wie folgt aussehen (in diesem Beispiel werden alle Dateien und Ordner aus dem Ordner “fileadmin” gelöscht, der sich auf der selben Ebene wie das Skript befindet):

function recursive_readdir($path)
{
	$handle = opendir($path);
	while (($file = readdir($handle)) !== false)
	{
		if ($file != '.' && $file != '..')
		{
			$filepath = $path . '/' . $file;
			echo $filepath.'<br />';
			if (is_dir($filepath))
			{
				rmdir($filepath);
				recursive_readdir($filepath);
			}
			else
			{
				unlink($filepath);
			}
		}
	}
	closedir($handle);
}

recursive_readdir('./fileadmin');


Verwandte Beiträge

1 Kommentar to “Dateien und Ordner rekursiv mit PHP löschen”

  1. Sacha Bruse:


    Hallo zusammen,

    diese Erklärung auf dieser Seite finde ich sehr gut! Ich bin neue in sachen PHP, und hier habe ich viele gute Erklärungen gefunden.

    Es wäre auch nicht schlecht, wenn man hier über FTP-Funktionen Erklärungen finden würde! Es gibt viele Seiten wie man z.B. ein Verzeichnis + Unterverzeichnisse löscht, aber es gibt keine Seite, die es erklärt, wie man ein Verezeichnis auf dem Server löscht mit FTP-Funktionen! Ich hoffe, dass auch solche Funktionen berücksichtig wird!

    Danke!

Kommentar schreiben