Auslesen von Verzeichnis und Dateirechten
Das hier vorgestellte kleine Script liest rekursiv die chmod der Verzeichnisse und Dateien aus. Hilfreich wenn man mit Daten auf einen anderen Server wechselt und dort die Dateirechte neu setzen muss.
Komplettes Codebeispiel und Screenshot
Dieses Script liest von allen Verzeichnissen und Dateien unterhalb des Scriptes die chmods aus und stellt diese in einer Tabelle dar. Möchte man die chmod „mitnehmen“, z.B. wenn ein Serverwechsel ansteht, einfach alle nötigen Ausgaben in eine Datei speichern und auf dem neuen Server auslesen. Dort dann mittels
CODE:
chmod ( $datei, $dateirecht );
neu setzen.
Der Code zum auslesen der Dateirechte
CODE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <title>Dateirechte auslesen</title> <style type="text/css"> body, td { background-color: #f7f7f7; font-family: Verdana, Arial; font-size: 11px; color: #000000; } </style> </head> <body> <table cellspacing="2" cellpadding="2" border="1"> <tr> <td>Verzeichnis - Datei</td> <td>chmod okt.</td> <td>chmod</td> </tr> <?php read_rekursiv(); ?> </table> <?php // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // // Verzeichnisse und Dateien auslesen // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // function read_rekursiv($pfad = ".") { $dir = dir($pfad); while(false !== ($file = $dir->read())) { if(("." == $file) OR (".." == $file)) continue; if(is_dir($pfad."/".$file)) { list ($chmod1,$chmod2) = dateirechte($pfad."/".$file, true); clearstatcache(); echo "<tr>\n\t<td><b>$pfad/$file</b></td>\n\t<td>$chmod1</td>\n\t<td>$chmod2</td>\n</tr>\n"; read_rekursiv($pfad."/".$file); } else { list ($chmod1,$chmod2) = dateirechte($pfad."/".$file, false); clearstatcache(); echo "<tr>\n\t<td>$pfad/$file</td>\n\t<td>$chmod1</td>\n\t<td>$chmod2</td>\n</tr>\n"; } } $dir->close(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // // Hilfsroutine chmod auslesen // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // function dateirechte($file, $octal = false) { if(!file_exists($file)) return false; $perms = fileperms($file); $cut = $octal ? 1 : 2; $chmod = substr(decoct($perms), $cut); return array($perms, $chmod); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // ?> </body> </html>
Screenshot der Ausgabe

Keine Kommentare vorhanden