<?php include.PHP BEFEHL statt absolute URI/

Guten Tag,

auf meiner Website verlinke ich alle Seiten untereinander, bisher hat das auch funktioniert mit absoluten Pfaden, nun aber musste ich Skript bedingt einen neuen Unterordener anlegen für ein Newsletterskript das in die Website integriert ist/wird. Ich habe ein Template in dem ich alle Unterseiten über <?php include() ?> einsetze. Die bisher genutzten Seiten lagen alle im root Verzeichnis, nun ist aber wie oben erwähnt mein Newsletterform auch in ein Template integriert worden mittels <?php include() ?> welches aber nun im Unterordenr liegt. Wenn ich jetzt wieder im Menu auf eine Seite klicke erschein der absolute eingetragene Pfad mit dem Unterordner Verzeichnisnamen davor daher kommt die Meldung Seite nicht gefunden Fehler 404!

Meine Frage gibt es in PHP eine Möglichkeit die ich anstatt einer absoluten URI nutzen kann???
zb: $ SERVER[‚HTTP HOST‘] (was leider bei mir im zusammenhang mit <?php include(".PHP BEFEHL statt absolute URI????.") ?> nicht funktioniert).

Ich bin wirklich über jede Hilfe dankbar bin noch absoluter Anfänger was Php angeht.

Beste Grüße,
hjw

Natürlich kann man immer auch relative Pfade verwenden.
Allerdings werden diese nicht relativ zur Datei in der das inlude() steht, sonderen relativ zu der ausgeführten Datei(z.B. index.php) ausgewertet.
Der Nachteil dabei ist, dass man so innerhalb eines aus einem Unterordner inkludierten Skriptes keine Annahmen über relative Pfade machen kann.
Deshalb kam es wohl auch zum Fehler.
Es gibt aber die Möglichkeit Pfade auch relativ zu der Datei in der die include()-Anweisung steht zu spezifizieren.

// Ermittelt eigenen Datei-Pfad und bindet „ordner/extern.php“ relativ zu diesem ein:
include(realpath(dirname(__FILE__)).’/ordner/extern.php’);

Beste Grüße
Stefan
Ich benutze das sehr gerne, da es so nie derartige Probleme gibt.

Hallo hjw

verstehe ich das richtig, sobald du vom subfolder auf die root-webseiten nicht zugreifen kannst, weil du im root überall deine includes definiert hast?
ich weiss nicht genau, wie du das ganze programmiert hast, aber du könntest ev. in den subfolder die includes mit include(’…/meinefilesimroot.php’) ?> … ansonsten kann ich dir leider nicht helfen…
ich müsste mich auch auf google erkundigen…

gruss
south

AW:
Moin,

danke für die Tipps! Hat mich auf den funktionierenden Weg grebracht und ich hab nun anstatt den absoluten URI, folgende Lösung angewendet. „<?php include($_SERVER['DOCUMENT_ROOT'] . '/_DIR_/_FILE_.php'); ?>“

Diese Variante funktioniert beinahe problemlos, aber wenn ich „<?php $_SERVER['DOCUMENT_ROOT']; ?>“ in einen Stylesheet switcher einbauen möchte bekomme ich nur ein Parse error (siehe weiter unten)!

Das Problem:

<?php echo ($_SESSION['csschanger'])? $_SESSION['csschanger']:
' Der Fehler: (Originaladresse durch Platzhalter ersetzt) Parse error: syntax error, unexpected T\_STRING, expecting ',' or ';' in /is/htdocs/\_HOST\_/\_ROOT-VERZEICNIS\_/\_DIR\_/css.php on line 2 Meine Frage: Wo habe ich die falschen oder zuvielen Kommas bzw. Semikolons oder einen anderen Fehler geschrieben? Bin dankbar um jede Hilfe, Beste Grüße hjw

Naja

  1. man kann keine einfachen Hochkommata in einfachen Hochkommata verwenden!
  2. man kann <?php <?php ?> ?> nicht verschachteln
    Also:
<?php echo
($\_SESSION['csschanger'])? $\_SESSION['csschanger'] : ''); ?\> Habs nicht getestet aber ganz klar war das oben gennante der Fehler. Gruß Stefan PS: Ich würde dir trotzdem zu relativen Pfaden raten, denn sollte sich das ganze Projekt mal in einem Unterordner verschieben o.Ä., dann müssen gänzlich alle Pfade angepasst werden.