Probleme Schleifen und include()

28dayslater

Mitglied
Ich weiss nicht, wo mein Fehler liegt, aber ich erläutern eben das Problem. Ich habe eine Text-Datei in der ich Dateinamen speichere(zeilenweise,jedoch ohne Pfadangabe).

Code:
database.php
template.php
units.php
Ich definiere die Pfadangabe zu genau dieser Text-Datei und zum Ordner so:

PHP:
<?php
//Systemeinstellungen
define('BOOT',"./include/boot.txt");
define('SYSTEM',"./include/system/");
?>
So, jetzt in meinem Script will ich die Text-Datei auslesen und die Dateien einbinden (natürlich mit der Konstante "SYSTEM" als Pfadangabe zu diesen Dateien:

PHP:
if ( is_file(BOOT) ) {
         //Boot-File auslesen
         $boot = file( BOOT );

         if ( !empty($boot) ){
                 //Array durchlaufen und....
                 for($i = 0; $i < count($boot); $i++) {
                         //....Dateien nacheinander einbinden
                          if ( is_file( SYSTEM.$boot[$i]) ) {
                                 include(SYSTEM.$boot[$i]);

                         }
                 }
         }


}
Hier tritt das Problem auf, da immer nur die letzte Datei, die in der Text-Datei vermerkt ist, eingebunden wird, weil die anderen 2 Dateien angeblich nicht gefunden werden.

Alternativ habe ich deshalb versucht den Ordner einfach auszulesen und siehe da, es funktioniert.

PHP:
<?php
                  $files=glob(SYSTEM."*.php");
                  foreach ($files as $filename) {
                         include($filename);
                  }
?>
Die Pfadangaben stimmen komplett überein, wenn ich bei beiden Scripts die Dateinamen ausgeben lasse.

Wo liegt hier also der Fehler?

mfg 28
 
Las den punkt bei der pfad angabe weg oder mache 2 punkte. Je nach dem in welcher Verzeichniss eben du die befindest. Wenn du ganz sicher gehen willst dann verwende relative Pfad angaben.

Mfg Splasch
 
Ich bin mir nicht sicher aber ich würde tippen dass dein Problem mit dem einlesen der boot.txt zusammenhängt.
Beim einlesen mittels file() bleibt der Zeilenumbruch erhalten und ist teil der Strings in deinem Array. Versuchs mal mit
if ( is_file( SYSTEM.trim($boot[$i])) ) {
include(SYSTEM.trim($boot[$i]))

Ich würde die Variable $boot zusätzlich auf typsicherheit prüfen oder zumindest darauf ob ihr Inhalt false ist.
 
Zurück