TS: include findet php-Datei nicht bei Aufruf aus tieferem Ordner

Beitrag lesen

problematische Seite

Hello in meine alte Heimat,

damals wohnte ich in der Nordstadt und das Studentenwohnheim an der Schunter war oft meine Wirkungsstätte... Gibt es das noch?

Du kannst die includes auf die Document Root beziehen:

include rtrim($_SERVER{'DOCUMENT_ROOT'},'/') . '/../includes/menu.inc'; 

Warum den Stammpfad so kompliziert bestimmt?
Die Document Root ist eine Konfigurationseinstellung des Webservers und je nach Geschmack des Admins wir die mal mit abschließendem Slash (nach POSIX wäre das als virtuelles Directory sogar richtig) geschrieben und bei anderen Einrichtungen ohne (leider üblich).

Den Pfad rtrim($_SERVER{'DOCUMENT_ROOT'},'/') . '/../includes/' kannst Du auch in einer Konstanten ablegen, um nicht jedes Mal wieder überlegen zu müssen.

Die Nutzung des Include-Path aus der Konfigurationseinstellung kostet hingegen deutlich Zugriffszeit, da immer erst alle Pfade in der üblichen Reihenfolge nach der Datei durchsucht werden müssen.

Die Verzeichnisstruktur auf dem Server könnte nach obigen Beispiel eventuell so aussehen:


/---+---etc
    | 
    +---var
    |    +---www
    |    +---example.org
    |    |      +---htdocs 
    |    |      +---data
    |    |      +---sessions 
    |    |      +---includes  
    |    |      |       +---menu.inc
    |    |      |       +---footer.inc
    |    |      +---tmp
    |    |      +---log
    |    +---log
    |    +—--
    |    +---

Der expandierte Pfad zur Document Root würde dann

/var/www/example.org/htdocs/ 

lauten. Die includes lägen außerhalb der Document Root, was meistens zu empfehlen ist, damit sie nicht ohne die Applikation (PHP) per http/s aufgerufen werden können und man leichter Zugangsrechte verwirklichen kann.

Liebe Grüße
Tom S.

--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.