Moin!
Das ganze mach ich auch nur, weil auf meine Seite massive Attacke statt finden.
Ah. Das erklärt die Panik, die aus dem Code ersichtlich wurde. Aber es stellt sich die Frage, warum Du Die Datei dann nicht automatisch anlegst (Code unten).
Jörg Reinholz
<?php # Dein Code ist nicht gut aufgeräumt, ich habe das mal geändert. $myfolder = '/var/www'; # Hier statisch, weil in der Konsole getestet. # So wie Du das anfängst brauchst Du eine globale Variable für den Array: $GLOBALS['folder_array']=array(); list_folder($myfolder); asort($GLOBALS['folder_array']); foreach($GLOBALS['folder_array'] AS $folder){ echo $folder."<br>\n"; if (! ( is_file($folder.'/index.php') || is_file($folder.'/index.html') || is_file($folder.'/index.pl') ) ) { if ( touch ($folder.'/index.html') ) { chmod ($folder.'/index.html', 0644) echo "Verzeichnis hatte keine index-Datei, wurde angelegt.<br>\n"; } else { echo "Verzeichnis hatte keine index-Datei, Anlegen ging auch nicht.<br>\n"; } } } exit; # "Deklaratorisch", damit der Progger weiß, hier ist das Hauptprogramm zu Ende function list_folder($path){ if( $handle = @opendir($path) ) { #Hinweis #@ ist "böse", Du bekommst nicht mit, wenn ein Verzeichnis nicht lesbar ist while (false !== ($file = readdir($handle))){ if ($file != "." && $file != ".." && is_dir($path."/".$file) ) { $GLOBALS['folder_array'][] = $path.'/'.$file; list_folder($path.'/'.$file); # das hier nennt sich "rekursiver Funktionsaufruf" } } closedir($handle); } } ?>
Hab das ganze mal etwas erweitert und hoffe das das so ok ist, damit die erzeugte Datei auch Inhalt hat, habe ich folgendes hinzugefügt:
if ( touch ($folder.'/index.html') ) {
chmod ($folder.'/index.html', 0644);
$datei = fopen($folder.'/index.html',"r+");
$inhalt = fgets($datei, 10);
if($inhalt == '') {
$inhalt = '<html><body bgcolor="#FFFFFF"></body></html>';
}
rewind($datei);
fwrite($datei, $inhalt);
fclose($datei);
echo "Verzeichnis hatte keine index-Datei, wurde angelegt.<br>\n";
} else {
echo "Verzeichnis hatte keine index-Datei, Anlegen ging auch nicht.<br>\n";
}
Sollte ich das schreiben in die Datei auch noch extra prüfen?
PS: Hinter chmod fehlte ;