Eier-mit-Kresse: PHP: Include von Datein in Unterverzeichnissen

Hallo,

ich habe ein Problem. Meine Configdatei liegt im http://subdomain.example.com/config.php mein Script das auf die Config zugreifen soll in http://subdomain.example.com/beispiel/index.php . Wie include ich eine Verzeichnisebene tiefer?

require("config.php"); //Kann nicht laufen die Datei ist nicht im Verzeichnis
require(".\config.php"); //Scheint auch nicht includet zu werden...

Oder mache ich einen Syntaxfehler?

akzeptierte Antworten

  1. Hallo,

    Oder mache ich einen Syntaxfehler?

    Versuch mal Slash statt Backslash. Außerdem könntest du auch zwei Punkte nehmen.

    Gruß
    Kalk

    1. Danke Kalk, funktioniert

  2. Wie include ich eine Verzeichnisebene tiefer?

    Du meinst höher. Mit

    require("../config.php");
    

    Du könntest Du auch absolute Pfadangaben verwenden, dann sparst Du dir die Mühe immer den relativen Pfad von allen Scripten zu "errechnen".

    Cheers,
    BaBa

    --
    BaBa kommt von Basketball
    1. require("../config.php");
      

      Danke BaBa funktioniert

  3. Hallo,

    ich habe ein Problem. Meine Configdatei liegt im http://subdomain.example.com/config.php mein Script das auf die Config zugreifen soll in http://subdomain.example.com/beispiel/index.php . Wie include ich eine Verzeichnisebene tiefer?

    Mit ../config.php. Die Regeln zum relativen Referenzieren in HTML gelten auch beim Arbeiten im Dateisystem.

    Gruß,
    Tobias

    1. Danke Tobias,

      wieder lesestoff für den PHP beginner.

  4. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

    ich habe ein Problem. Meine Configdatei liegt im http://subdomain.example.com/config.php mein Script das auf die Config zugreifen soll in http://subdomain.example.com/beispiel/index.php . Wie include ich eine Verzeichnisebene tiefer?

    require("config.php"); //Kann nicht laufen die Datei ist nicht im Verzeichnis
    require(".\config.php"); //Scheint auch nicht includet zu werden...
    

    Relative Pfade verwenden wäre möglich, ist aber sehr pflegeintensiv für ein Projekt:

    require_once("../config.php"); ## 
    

    Besser wäre es ohnehin, wenn derartige Dateien gar nicht innerhalb der Document Root liegen würden, damit sie nicht bei Ausfall des PHP-Interpreters aus versehen im Klartext ausgeliefert werden.

    Und dann kann man auch relativ zur Document Root adressieren:

        include_once(rtrim($_SERVER['DOCUMENT_ROOT'], '/') . '/../includes/config.php');
    

    Hier würde das include-Dir dann ein Schwesterverzeichnis der Dokument-Root sein und es ist egal, in welcher Verzeichnistiefe innerhalb der Document Root dein Skript liegt.

    Warum ich den Slash am Ende von Document Root erst abschneide, und dann wieder anhänge? Weil die Document Root laut Apache ohne Slash angegeben werden muss, einige Admins aber die eigentlich vorgeschreibene Schreibweise nach Posix für Verzeichnisse, also mit Slash am Ende nehmen. Das kann dann zu Problemen führen.

    Alle anderen Spielarten kannst Du Dir mal selber ausdenken.

    Spirituelle Grüße
    Euer Robert
    robert.r@online.de

    --
    Möge der wahre Forumsgeist ewig leben!
    1. Danke Roboert das ist super um sich weiter mit dem Thema zu beschäftigen.