Pour itérer récursivement sur un dossier en php, vous pouvez utiliser le code suivant :
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($pathname),
RecursiveIteratorIterator::SELF_FIRST
);
Exemple : Changer les droits des éléments inclus dans un dossier :
$pathname = "/chemin/du/dossier/";
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($pathname),
RecursiveIteratorIterator::SELF_FIRST
);
foreach($iterator as $item) {
chmod($item, 0777);
}