Thomas: Relative Adressierung in PHP anders als in HTML?

Hallo,

mich wundert folgendes:

Um mir Tipparbeit zu ersparen, füge ich wiederkehrende Seitenelemente per include in meine Website ein. Seltsamerweise funktioniert dabei die Adressierung in folgender Weise nicht:

<?php include ("/skripte/copyright.php"); ?>

Es funktioniert nur so:

<?php include ("../skripte/copyright.php"); ?>

Der obere Link, der vom Wurzelverzeichnis aus in den Ordner "Skripte" und dort zu dem File "copyright.php" geht, funktioniert in HTML als href-Link einwandfrei. Der untere Link geht zwar den gleichen Weg, startet aber nicht im Wurzelverzeichnis, was das ganze unflexibler macht.

Kennt jemand von euch den Grund?

Danke

Thomas

  1. Hallo Thomas,

    Kennt jemand von euch den Grund?

    Ja, HTML arbeitet von der DocumentRoot aus, PHP von deinem Root-Verzeichnis auf dem Server. zur Veranschaulichung:

    Dein Verzeichnis auf dem Server:
    /docs/kunden/thomas/www.example.org/www/scripte
    Da liegen Deine Dateien, und damit 'rechnet' PHP, wie alle serverseitigen Scriptsprachen.

    Deine Seite liegt im www/ ordner und damit 'rechnet' der Browser, weil er nur das zu sehen bekommt.

    Verständlich? ;)

    Gruss, Thoralf

    --
    Sic Luceat Lux!
  2. Hi,

    Um mir Tipparbeit zu ersparen, füge ich wiederkehrende Seitenelemente per include in meine Website ein. Seltsamerweise funktioniert dabei die Adressierung in folgender Weise nicht:

    unterscheide zwischen relativen Angaben im Filesystem und solchen in URLs. Ressourcen und Dateien haben *nichts* miteinander zu tun, und insbesondere ist Root etwas vollkommen anderes.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. Es kann eigentlich nur sein, das dein jetziger Standort zum Beispiel in

    /usr/local/apache/htdocs/testordner/test.php

    ist.

    Dein copyright.php php liegt aber in

    /usr/local/apache/htdocs/skripte/

    heißt .. <-- ein Verzeichnis Zurrück nach

    /usr/local/apache/htdocs/

    /skripte/ ->  /usr/local/apache/htdocs/skripte/

    /copyright -> /usr/local/apache/htdocs/skripte/copyright

    ohne die Punkte würde er ja versuchen dahin zu gehen

    /usr/local/apache/htdocs/testordner/skripte/copyright.php , was es ja aber nicht gibt

    mfg
    Zafron

    1. Hallo Zafron, Thoralf und Cheatah

      ohne die Punkte würde er ja versuchen dahin zu gehen

      /usr/local/apache/htdocs/testordner/skripte/copyright.php , was es ja aber nicht gibt

      Ihr habt es gleich erfaßt! :-)

      Zum einen benutze ich Apache als Webserver (und arbeite unter Windows), zum anderen habe ich in der Tat diesen Unterschied nicht bedacht/gewußt. Da ich gerne alle Dateien, die zu meinem Webprojekt gehören, beisammen hätte und nicht verteilt auf die apache/includes - usw. Ordner, kann ich da vielleicht das httpd.conf - File so ändern, daß Apache die includes an der richtigen Stelle findet?

      Oder schieße ich damit ein Eigentor, weil, sobald ich meine Seiten zum Webhoster hochlade, wieder an der falschen Stelle gesucht wird?!

      Und falls das dann der Fall wäre, reicht es dann vielleicht, bei <?php include ... ?> nur den Dateinamen selbstz anzugeben, vorausgesetzt, die zu includierende Datei steht direkt im apache/includes - Ordner?

      Danke und Gruß

      Thomas

      1. Hi,

        Da ich gerne alle Dateien, die zu meinem Webprojekt gehören, beisammen hätte und nicht verteilt auf die apache/includes - usw. Ordner, kann ich da vielleicht das httpd.conf - File so ändern, daß Apache die includes an der richtigen Stelle findet?

        Dateien sind Dateien, da ist über die Konfiguration nichts dran zu rütteln. Entweder packst Du Dein DOCUMENT_ROOT in das Wurzelverzeichnis Deiner Festplatte - was ich *definitiv _nicht_* empfehlen kann - oder Du sorgst in Deinem Script für die Generierung des richtigen Dateipfades. Hinweise dazu in diesem Absatz.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo Cheatah,

          Dateien sind Dateien, da ist über die Konfiguration nichts dran zu rütteln.  ... oder Du sorgst in Deinem Script für die Generierung des richtigen Dateipfades.

          Alles klar, werde ich so machen, Danke.

          Gruß

          Thomas