Problem mit Ordnerstruktur für include

supachecka

Mitglied
Hallo,

ich würde gern als Kopf und Fuß jeweils eine php-Datei auf mehreren Seiten includen. Allerdings soll dies unabhänging von der Position der Datei in meiner Ordnerstruktur funktionieren, also wie im beispiel unten, sowohl in index.php als auch in content.php.

Also als Beispiel:

index.php
include(header.php, footer.php)
kategorie1 (content.php)
kategorie2 (...)

In meiner header.php sind z.b. die javascript und css dateien verlinkt, und sobald ich die content.php öffne stimmen die verknüpfungen nicht mehr.

Ich hoffe das war jetzt verständlich ausgedrückt.
Vielleicht kann mir jemand sagen wie ich das mache, oder weiß wo ich etwas dazu finde, hab bis jetzt nichts brauchbares zu dem Thema gefunden.
 
Asolute Pfade statt relative verwenden, und es sollte prima funktionieren.

also nicht:

PHP:
include("../config.php")

sondern

PHP:
include("/var/www/web1/config.php")

um die absoluten Pfade herauszufinden wo du dich gerade befindest auf dem server gibt es getcwd() für die Javascriptincludes "/js/datei.js" abhängig davon wo eben die Domain hinzeigt.
 
Zuletzt bearbeitet:
Ja das Problem ist mir auch bekannt. Überhaupt von Suchmaschien die Untergeordnente php datein Dierekt aufrufen und dann das Verzeichniss des include nicht mehr Stimmt.

Als Lösung hab ich mir überlegt das ganze einfach Dynamisch anzupassen.
Damit mein ich das Akutelle Verzeichnis aus dem Server Variablen auslesen und dann dementsprechen dem include durch eine Variable anzupassen.

Dann würde der include befehl so in der art aussehen.

PHP:
include($verzeichnis.'Dateiname.php');
// Oder man stetz voher den string dann zusammen und gibt bei include es so an.
include($verzeichnis);

Mfg Splasch
 
Also erstmal danke für die schnellen Antworten, aber ich weiß nicht so recht wo ich anfangen soll. Hab mir überlegt, dass man doch vielleicht eine Konstante festlegen könnte, die die Position von index.php speichert, also so:

PHP:
define('ROOT_PATH', getcwd());

aber jetzt frag ich mich, wie kann ich auf diese Konstante von einer anderen datei zugreifen, dann wär der Rest ja ganz einfach. Ich will es ja umgehen, dass ich eine Variable mit GET übergeben muss, die den Dateipfad einhält...

--->bearbeitet
Es funktioniert jetzt zwar, aber ich hatte gehofft dass mir jemand eine dynamische Lösung erklären kann, bei der man die Konstante nicht ändern muss wenn mann die Daten hochlädt.

PHP:
define ('REAL_PATH','http://localhost/projekt/');

Wenn noch jemand ne Idee hat wäre ich sehr dankbar.
 
Zuletzt bearbeitet:
Hmm hab den Fehler gefunden, es ist alles so wie Michael und splash es gesagt haben. Der Fehler lag wo anders. Die absoluten Pfade gingen bei mir auf dem Apache nicht weil ich das Projekt nicht im Root-Verzeichnis liegen hatte sonden in einem extra Ordner:

falsch war also:
http://localhost/projekt/index.php

richtig ist:
http://localhost/index.php

bzw. wäre es noch möglich das mit subdomains (keine ahnung ob das im localhost auch so heißt) zu arbeiten...
http://projekt.localhost/

Vielleicht hilfts ja noch wem.
Danke für eure Hilfe
 
Zurück