PHP: Datei-Rechte rekursiv ändern

Manchmal möchte man auf UNIX-basierten Servern die Dateirechte via PHP für alle Dateien und Unterverzeichnissen ändern (also rekursiv). Das lässt sich recht einfach lösen, vorallem wenn man keine UNIX-Funktionen aufrufen kann. Wir nutzen dazu einfach die rekursiven Iterator, die der Spl beiliegen:

<?php
$folder  = dirname(__FILE__);
$folder .= '/verzeichnis'; // Hier das Verzeichnis angeben (ausgehend vom Verzeichnis dieser Datei)
 
chmod($folder, 0777);
$dir = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder), RecursiveIteratorIterator::CHILD_FIRST);
foreach($dir as $file)
{
	chmod($file->getPathname(), 0777);
	echo 'chmod 0777 '.$file->getPathname().'<br>';
}
?>

Um es kurz zu erklären: Wir erstellen ein Objekt RecursiveIteratorIterator, mit dem wir das zweite Objekt RecursiveDirectoryIterator in einer Foreach-Schleife durchlaufen können. Etwas verzwickt, ist aber die einfachste und schnellste Methode um rekursiv Verzeichnisse zu durchlaufen.