Mailinglisten-Archive |
Hallo Tobias, Am Donnerstag, 11. Januar 2007 09:43 schrieb Tobias Fichtner: > MalZeit, > > mir obliegt die lösung des folgenden Problems: > > [SOURCE:./index.php] > <?php > > $handle=opendir( dirname( __FILE__ ) ); > > while( $file = @readdir( $handle ) ){ > if( $file != "." && $file != ".." ){ > require_once( dirname( __FILE__ ) . '/' .$file ); > } > } > > @closedir( $handle ); > > ?> > > Problem im genauen: > -Unter Windows: > schleife läuft, bindet ein was durchs if kommt und per "once" nicht > schon drin ist und lässt mich in ruhe! > -Unter Linux: > schleife läuft, bindet ein was durchs if kommt und per "once" nicht > schon drin ist, abgesehen von sich selbst. Bindet sich selbst > mehrfach ein und verursacht ganz nebenbei einen unerklärlichen: "is > not a valid directory resource" für readdir und closedir. > > Meine Frage: > kennt das jemand und weiss er dazu eine lösung? > > Antworten die ich kenn: > @ setzen und wegschaun! (ist aber keine lösung) wenn ich das jetzt richtig verstanden habe, hast Du die Erklärung doch eigentlich schon selbst gefunden: Die Datei bindet sich selbst ein, und zwar genau einmal. Aber das reicht. Dadurch wird $handle in der while-Schleife beim Einbinden der index.php neu belegt und dann eben auch wieder geschlossen, so daß readdir und closedir anschließend in der while-Schleife und danach für den Zugriff keine gültige Resource mehr haben. ;-) Die Lösung ist genauso einfach. Die index.php darf sich nicht selbst einbinden. Ergänze also einfach Deine if-Bedingung: if( $file != "." && $file != ".." && $file != "index.php" ){ Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive