# verzeichnis auslesen und dateien durchsuchen



## Rev (19. Mai 2002)

hi
ich hab folgendes prob:
ich hab mir nen script geschrieben um chatlogs zu durchsuchen

```
<?php
$a="test";
$b="test2";
$directory = "log/"; 
$handle = opendir($directory); 
while ($file = readdir ($handle)) 
{
 $fd = fopen($file,"r");
 $seite = fread ($fd, filesize ($file));
 $seite=strtolower($seite);
 fclose ($fd);

if (strstr($seite,$a)) 
 {
  if(strstr($seite,$b))
  {
  print($file);
  }
 }
}
?>
```

das ganze gibt dann folgende fehler:



> Warning: fopen(".", "r") - Permission denied in c:\programme\apache group\apache\htdocs\isa\index.php on line 9
> 
> Warning: fread(): supplied argument is not a valid File-Handle resource in c:\programme\apache group\apache\htdocs\isa\index.php on line 10
> 
> ...



das ganze läuft lokal auf meiner 2000er maschine.. 
weiß jemand wo der fehler ist?


----------



## Matthias Reitinger (19. Mai 2002)

Also... erstens musst du vor dem Öffnen erst mal das Verzeichnis mit berücksichtigen, denn sonst nimmt PHP an, dass du eine Datei öffnen willst, die im gleichen Verzeichnis wie das Script liegt. Also musst du das Verzeichnis vor den Dateinamen hängen.

Dann zweitens, vor dem Öffnen musst du außerdem überprüfen, ob es sich überhaupt um eine Datei handelt. Könnte ja auch ein Verzeichnis oder ein Link sein. Also mit is_file() auf Datei testen, wenn's keine ist, weiter mit dem nächsten Schleifendurchlauf.

Drittens kannst du beide if-Anweisungen zu einer zusammenziehen. Ist zwar kein Fehler, das anders zu schreiben, sieht aber schöner aus.

Hier die korrigierte Version:

```
<?php
$a = "test";
$b = "test2";
$directory = "./log/"; 
$handle = opendir($directory); 

while ($file = readdir ($handle)) {
	$file = $directory.$file;
	if (!is_file($file)) continue;
	$fd = fopen($file,"r");
	$seite = fread ($fd, filesize ($file));
	$seite = strtolower($seite);
	fclose ($fd);

	if (strstr($seite,$a) && strstr($seite,$b)) {
		print($file);
	}
}
?>
```


reima


----------



## Rev (19. Mai 2002)

hi
vielen dank erstmal..
nur eine frage

kann es sein, dass er dateinamen mit sonderzeichen nicht beachtet? 
also zb
"log%a0zusammenschneiden.html"


----------

