is_dir: bin ich blöd?

relaxodeluxe

Mitglied
tach..

kann mal jemand...
PHP:
if ($direc = opendir("c:/projekt/daten/")){
	while ($file = readdir($direc)) {
		if (!is_dir($file)) {
			$list_of_files[] = $file;
		}
	}
	for($i=0;$i<=count($list_of_files);$i++){
		echo $list_of_files[$i]."<br>";
	}
}
...ausprobieren. (natürlich für $direc ein exisitierendes DIR angeben).

eigentlich müsste ein ARRAY rauskommen, das alle FILES des Verzeichnisses ausliest. kommt aber nicht. WRUMM? ich erhalte eine liste aus files UND direcories... liegt das an der funktionsweise von is_dir unter windows?
das doof.

ideas?

reldel.
 
Hm... hab´s auch grad getestet auf meiner Maschine (Win2000, PHP 4.2.1), läuft wunderbar...

Ich kann deshalb nicht genau sagen, wo der Fehler liegt, aber probier mal diesen Schuss in´s Blaue...
PHP:
$dir = "c:/projekt/daten/";

if ($direc = opendir($dir)){
    while ($file = readdir($direc)) {
        if (is_file($dir.$file)) {
            $list_of_files[] = $file;
        }
    }
    for($i=0;$i<=count($list_of_files);$i++){
        echo $list_of_files[$i]."<br>";
    }
}
 
werden inhalte in deinen array eingetragen?
kannst du ja erstmal überprüfen, zB mit print_r($list_of_files);
 
jau, das array wird gefüllt.

c:/projekt enthält die beiden subdirs:
- daten
- sonstige
(keine dateien)

die funktion:
PHP:
if ($direc = opendir("c:/projekt/")){
		while ($file = readdir($direc)) {
			if (!is_dir($file)) {
				$list_of_files[] = $file;
			}
		}
		for($i=0;$i<=count($list_of_files);$i++){
			echo $list_of_files[$i]."|";
		}
		echo "<br>";
		print_r($list_of_files);
	}

ergibt


daten|sonstige||
Array ( [0] => daten [1] => sonstige )


obwohl NIX rauskommen müsste. (sind ja keine dateien drinne)

reldel.
 
uups,
der letzte beitrag bezog sich auf DAVE.

sorry, REIMA, hab dein posting nicht gesehen. muss aber auch hier sagen, dass es nicht mehr brachte. allerdings kann ich nun sagen, dass er die directories irgendwie als FILES erkennt. so deute ich zumindest das ergebnis von is_file.
ich check mal die php.ini, vieleicht gibts da ein problem.

schei.. computer ;)

gruss
reldel

ps: noch mehr info...

das teil macht SOWOHL mit der konfiguration:
win2k, apache1.3.24, php4.2.2

als auch mit dieser
suse7.3, apache1.3.20, php4.0.6 (verzeichnis is belieb. linux dir)

NICHT DAS, WAS ES SOLL.
 
Zuletzt bearbeitet:
Also ich habe ja ein CMS in Entwicklung. Dieses hat Module, die in einem Unterverzeichnis abgelegt sind. Ich gehe dieses Verzeichnis durch und prüfe mit is_dir, ob es sich um Verzeichnisse handelt. Ist es ein Verzeichnis, versuche ich die Datei plugin.config zu laden. In dem Modulverzichnis liegen auch noch 2 normale Dateien.

Naja, Fakt ist: auf manchen Systemen ( Zum Beispiel auf den Servern von Domainfactory ) gibt mir das Script am Anfang eine Fehlermeldung aus, weil es versucht, in einem Unterverzeichnis namens welcome.inc.php (augenscheinlich kein Verzeichnis) die Datei plugin.config zu finden.

Meine Erfahrung ist, dass is_dir mal geht, mal nicht. Und das unabhängig vom eingesetzten Betriebssystem.

Ciao, F.o.G.
 
danke FoG,

den eindruck habe ich auch. bin mittlerweile so verblieben, dass ich das coding so lasse, und bei der implementierung auf dem simulationsserver einfach mal die daumen drücke, dass es läuft.

habe leider auch keine weitere info darüber gefunden. wäre einfach mal interessant zu wissen, ob nur wir beide den eindruck haben.

gruss
reldel
 
@F.o.G. & interessierte.

das prob is doch bekannt und lässt sich umgehen:

PHP:
$dir = "c:/projekt/daten/";
chdir($dir); //ins gesuchte verzeichnis WECHSELN!
if ($direc = opendir($dir)){
    while ($file = readdir($direc)) {
        if (!is_dir($file)) {
            $list_of_files[] = $file;
        }
    }
    for($i=0;$i<=count($list_of_files);$i++){
        echo $list_of_files[$i]."<br>";
    }
}

geht zumindest bei mir, auf beiden systemen (linux & w2k)

reldel
 
Zurück