tox: Aufm Schlauch stehen mit $_SERVER['DOCUMENT_ROOT']

Hallo,

irgendwie steh ich gerade aufm Schlauch oder leide unter Halluzinationen. Ich könnte schwören, dass

<?php echo $_SERVER['DOCUMENT_ROOT']; ?>

auf einem Webserver (leider hab ich gerade keinen zur Verfügung) bisher solche Ergebnisse wie

../

oder

./

oder

../../

erzeugt hat, quasi die Ansicht von "oben". Jetzt habe ich mir den Apache auf mein System gedonnert und da schreibt er so Schotter wie

D:/pfad1/pfad2/usw.

Also den Pfad auf meiner Platte, quasi von "unten". Pfui ich will das nicht. Was mache ich falsch?

Danke und Gruss

  1. Moin!

    <?php echo $_SERVER['DOCUMENT_ROOT']; ?>

    ../

    Jetzt habe ich mir den Apache auf mein System gedonnert und da schreibt er so Schotter wie

    D:/pfad1/pfad2/usw.

    Also den Pfad auf meiner Platte, quasi von "unten". Pfui ich will das nicht. Was mache ich falsch?

    Nichts machst du falsch. Deine erwarteten Ergebnisse können passieren, wenn man den Server "eigenwillig" und unüblich konfiguriert (oder du hast einfach die falsche Erinnerung), üblich sind aber in der Tat Ergebnisse, wie du sie jetzt feststellst. Die DOCUMENT_ROOT-Angabe ist in aller Regel (und alle Programmierer sollten das auch so erwarten) ein vollständiger Pfad.

    Erkläre, was du eigentlich tun willst, und wir erklären, wie du das hinkriegst.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Tach Sven,

      Erkläre, was du eigentlich tun willst, und wir erklären, wie du das hinkriegst.

      ich möchte dass mir die Variable relative Pfadangaben relativ zum Basis URI ausgibt.

      Also wenn ich im Root Verzeichnis bin:

      ./

      Oder wenn ich zwei Ebenen weiter bin:

      ../../

      Damit meine per include eingelesenen Menüs mit ergänzenden Dateinamen die richtige Seite öffnen.

      Danke und Gruss

      1. hi,

        ich möchte dass mir die Variable relative Pfadangaben relativ zum Basis URI ausgibt.

        Also wenn ich im Root Verzeichnis bin:

        ./

        Oder wenn ich zwei Ebenen weiter bin:

        ../../

        Warum willst du dafür relative Pfadangaben haben?

        Das Document_Root ist doch extra dafür gedacht, einen absoluten Bezugspunkt zu haben, der von jeder beliebigen Stelle der Verzeichnishierarchie aus den Zugriff erlaubt.

        Damit meine per include eingelesenen Menüs mit ergänzenden Dateinamen die richtige Seite öffnen.

        Möchtest du vielleicht stattdessen den include_path passend(er) belegen?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Möchtest du vielleicht stattdessen den include_path passend(er) belegen?

          Cool eigentlich, das würde zwar jetzt lokal funktionieren, aber sobald die Seiten auf einem Webserver landen, wieder nicht mehr.

          Trotzdem Danke für deine Mühe

          und Gruss

      2. Moin!

        Erkläre, was du eigentlich tun willst, und wir erklären, wie du das hinkriegst.

        ich möchte dass mir die Variable relative Pfadangaben relativ zum Basis URI ausgibt.

        Das leistet DOCUMENT_ROOT nie. Dieser Wert ist über alle Skripte hinweg konstant. Also suchst du offenbar etwas anderes.

        Damit meine per include eingelesenen Menüs mit ergänzenden Dateinamen die richtige Seite öffnen.

        Gibts da etwas Beispielcode?

        Eigentlich kann ich dein Problem aber nicht so recht nachvollziehen. Wo sind deine Includes? Und geht es darum, die Includes wiederzufinden, oder in ihnen korrekte Links zu generieren?

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Gibts da etwas Beispielcode?

          Das soll z.B. so aussehen:

          <a href="<?php echo $root_verzeichnis; ?>/contact/index.php">Contact</a>

          oder

          <a href="<?php echo $root_verzeichnis; ?>/index.php">Home</a>

          Eigentlich kann ich dein Problem aber nicht so recht nachvollziehen. Wo sind deine Includes? Und geht es darum, die Includes wiederzufinden, oder in ihnen korrekte Links zu generieren?

          Die Includes sind dann das gleiche wieder andersherum:

          include $root_verzeichnis."/inc/menu.php";

          Alle Klarheiten beseitigt?

          1. Moin!

            Das soll z.B. so aussehen:

            <a href="<?php echo $root_verzeichnis; ?>/contact/index.php">Contact</a>

            oder

            <a href="<?php echo $root_verzeichnis; ?>/index.php">Home</a>

            Wenn du einen HTML-Link haben willst, der, egal auf welcher Seite, immer auf deine Startseite führt, dann nimm:

            <a href="/index.php">Home</a>

            Das gleiche gilt für Unterseiten:

            <a href="/contact/index.php">Contact</a>

            Eigentlich kann ich dein Problem aber nicht so recht nachvollziehen. Wo sind deine Includes? Und geht es darum, die Includes wiederzufinden, oder in ihnen korrekte Links zu generieren?

            Die Includes sind dann das gleiche wieder andersherum:

            include $root_verzeichnis."/inc/menu.php";

            An dieser Stelle kommst du mit dem DOCUMENT_ROOT aber weiter. Ansonsten: Auch relative Pfadangaben sind bei include möglich - aber hier höchstwahrscheinlich nicht notwendig.

            - Sven Rautenberg

            --
            "Love your nation - respect the others."
            1. <a href="/index.php">Home</a>

              Tatsächlich, da hab ich den Wald vor lauter Bäume wieder nicht gesehen.

              @ Dicki

              Sorry, ist doch nicht Banane, ist funzz-o-mat!

              Danke Euch allen

              und Gruss

      3. Hallihallo!

        Damit meine per include eingelesenen Menüs mit ergänzenden Dateinamen die richtige Seite öffnen.

        Es geht also anscheinend darum, Pfadangaben für Links "berechnen zu lassen". Das kann man aber auch mit HTML- Hausmitteln erreichen, indem Du einfach alle Linkziele mit einem "/" am Anfang angibst.
        Dadurch wird die folgende Angabe als relativ zum "Document Root", also zum Stammverzeichnis Deiner Seite, interpretiert.

        Diese Seite erklärt das genau.

        Viele liebe Grüße,
        Der Dicki

        1. Hi Dicki,

          Dadurch wird die folgende Angabe als relativ zum "Document Root", also zum Stammverzeichnis Deiner Seite, interpretiert.

          Diese Seite erklärt das genau.

          Das stimmt zwar, aber wenn Du ein und das selbe Script von verschiedenen Ebenen aufrufst, bekommst Du Banane :-)

          Danke und ebenso lieben Gruss