Heiko: Include-Pfad immer vom Startverzeichnis angeben

Hallo,
ich suche vergeblich bisher, wie ich alle zu icludierenden Dateien von den Verzeichnis angeben kann, wo auch die INDEX.PHP liegt.

Mit "www.Hompagename.de/<Verzeichnis>/xyz.php {bild.png}" usw. wäre das zwar möglich aber ich finde das sehr umständlich diesen pfad in jeder Datei anzugeben.

Der absolute Pfad Beispielsweise: /var/www/html/domaineXXXX/html/{index.php}
will auch nicht funktionieren.

Beispielverzeichnisstruktur:

GV -> hier ist die INDEX.PHP
./include/daten/
./include/daten/kategorie01/
./include/daten/kategorie01/pic/
./include/daten/kategorie01/txt/

./include/daten/kategorie02/
./include/daten/kategorie02/pic/
./include/daten/kategorie02/txt/

./include/picture/
./include/picture/allgemein

Nun kommt es vor, das die Index erst aus [./include/daten] eine Datei includiert und diese dann aus [./include/daten/kategorie02/txt/].

Nur funktioniert das nicht!

Für jede Lösung wär ich dankbar.

Danke im Voraus

LG Heiko

  1. Hello,

    ich suche vergeblich bisher, wie ich alle zu icludierenden Dateien von den Verzeichnis angeben kann, wo auch die INDEX.PHP liegt.

    Das meinst Du nicht. Du meinst: Wie kann ich zu includierende Dateien außerhalb der Document Root speichern und immer den richtigen Pfad dazu finden, egal, von wo aus der Ressource-Hierarchie ich sie gerade aufrufe.

    Baue deine Verzeichnisstruktur auf dem Webserver entsprechend auf. z.B:

    --Account--+--httpd--[Document Root]--+--
               |                          |
               +--data--                  +--
               |                          |
               +--config--                +--
               |
               +--includes--
               |
               +--sessions--
               |
               +--tmp--
               |
               +--log--

    Und dann benutzt Du $_SERVER['DOCUMENT_ROOT'] um die Verzeichnisse zu adressieren.

    http://de2.php.net/manual/en/reserved.variables.server.php

    include_once ("{$_SERVER['DOCUMENT_ROOT']}/../includes/form1.inc.php");

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hi Tom,

      ich meinte schon

      include "/bilder/verarbeitungs/script.php";

      mit "www.xyz" meinte ich
      $pfad = $_SERVER['HTTP_HOST']."/xyz";

      Includet werden PHP-Scripte sowie auch Bilder.
      ich habe aber den Fehler gefunden (zumindest nach einem anderen Test).

      Wenn die Index im Grundverzeichnis /xyz ist
      so ist es egal in welchem Verzeichnis ich mich befinde.
      Bisher FALSCH: /xyz/pflanzen/txt/kartoffeln.php
      RICHTIG ist: /pflanzen/txt/kartoffeln.php

      Danke euch dennoch

      LG

      1. Hello,

        ich meinte schon

        include "/bilder/verarbeitungs/script.php";

        Das glaube ich immer noch nicht. Denn der Include-Befehl bezieht sich bei PHP immer auf das Dateisyystem, wenn kein Scheme angegeben wird. Über ein Scheme (i.d.R. http://) zu includen führt in den meisten Fällen zu schweren Sicherheitslücken.

        Und dann wäre es ungewöhnlich, wenn das Verzeichnis "bilder" direkt in der File-Root liegen würde.

        mit "www.xyz" meinte ich
        $pfad = $_SERVER['HTTP_HOST']."/xyz";

        Includet werden PHP-Scripte sowie auch Bilder.

        Bilder können nicht "included" werden, zumindest nicht, wenn es sich um "normale Bilder" handelt.

        ich habe aber den Fehler gefunden (zumindest nach einem anderen Test).

        Du  solltest uns dein Ergebnis nochmals komplett vorstellen. Es wird Dir schon keiner 'was abgucken, wenn Du nicht gerade Passworte oder SSH-Keys postet.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hello,

          ich meinte schon

          include "/bilder/verarbeitungs/script.php";

          Das glaube ich immer noch nicht. Denn der Include-Befehl bezieht sich bei PHP immer auf das Dateisyystem, wenn kein Scheme angegeben wird. Über ein Scheme (i.d.R. http://) zu includen führt in den meisten Fällen zu schweren Sicherheitslücken.

          Und dann wäre es ungewöhnlich, wenn das Verzeichnis "bilder" direkt in der File-Root liegen würde.

          mit "www.xyz" meinte ich
          $pfad = $_SERVER['HTTP_HOST']."/xyz";

          Includet werden PHP-Scripte sowie auch Bilder.

          Bilder können nicht "included" werden, zumindest nicht, wenn es sich um "normale Bilder" handelt.

          ich habe aber den Fehler gefunden (zumindest nach einem anderen Test).

          Du  solltest uns dein Ergebnis nochmals komplett vorstellen. Es wird Dir schon keiner 'was abgucken, wenn Du nicht gerade Passworte oder SSH-Keys postet.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          also mal blau-gelbe grüße von Leipzig nach Braunschweig ;)

          ich habe es doch erklärt, wo mein Fehler lag:

          Alle PHP-Scripte (und *.png Bilder) liegen im Verzeichnis xyz bzw. in den Unterortnern.

          FALSCH:
          $verz = "/xyz/unterverzeichnis1/unterverzeichnis2/<datei>";

          RICHTIG:
          $verz = "unterverzeichnis1/unterverzeichnis2/<datei>";

          LG zur eintracht

  2. Es gibt zwei Arten von Verweisen: absolute und relative.

    Mit "www.Hompagename.de/<Verzeichnis>/xyz.php {bild.png}" usw. wäre das zwar möglich aber ich finde das sehr umständlich diesen pfad in jeder Datei anzugeben.

    Das wäre ein Möglichkeit (allerdings wenn dann mit http://www.....). Aber, da gebe ich Dir Recht, zu lang. Die andere Möglichkeit für absolute Pfade  ist "/bilder/foto1.jpg". Beginnend mit slash "/" und nicht mit "./" !!!

    Beide absoluten Angaben sind beginnend vom öffentlichen Verzeichnis "www" oder ähnlich (Document Root). Du nennst es in Deinem Post GV.

    Relative Pfade kommen für Dich nicht in Frage. Da, wie du schreibst, Inhalte von verschiedenen Orten lädst. Die Variante ginge denn so: "./bilder/foto1.jpg". Diese Angabe bezieht sich auf einen Ort relativ zu dem Ort, wo der Aufruf stattfindet.

    Der absolute Pfad Beispielsweise: /var/www/html/domaineXXXX/html/{index.php}

    Achtung: das ist der serverseitig (Server Root). Hat mit dem Referenzieren von Bildern, klientseitig nichts zu tun. Der Klient "sieht" nur alles, ab dem öffentlichen Verzeichnis.

    Hoffe, das hilft Dir.

    Cheers,
    Baba

    1. Hello,

      Es gibt zwei Arten von Verweisen: absolute und relative.

      Und dann gibt es noch

      • Aufrufe über das Filesystem, also "intern"
      • Aufrufe von Ressourcen über ein Protokoll, also z.B. http:

      Relative Pfade kommen für Dich nicht in Frage. Da, wie du schreibst, Inhalte von verschiedenen Orten lädst. Die Variante ginge denn so: "./bilder/foto1.jpg". Diese Angabe bezieht sich auf einen Ort relativ zu dem Ort, wo der Aufruf stattfindet.

      Er sprach von "Includieren von Dateien in PHP", nicht von Referenzieren von Ressourcen im HTML-Dokument.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Es gibt zwei Arten von Verweisen: absolute und relative.
        Und dann gibt es noch

        • Aufrufe über das Filesystem, also "intern"
        • Aufrufe von Ressourcen über ein Protokoll, also z.B. http:

        ... welche dann auch wieder absolut oder relative wären... (Du vergleichst Äpfel mit Obst).

        Relative Pfade kommen für Dich nicht in Frage. Da, wie du schreibst, Inhalte von verschiedenen Orten lädst. Die Variante ginge denn so: "./bilder/foto1.jpg". Diese Angabe bezieht sich auf einen Ort relativ zu dem Ort, wo der Aufruf stattfindet.

        Er sprach von "Includieren von Dateien in PHP", nicht von Referenzieren von Ressourcen im HTML-Dokument.

        Das bleibt noch abzuwarten :) Frage steht zwar in (PHP), da aber

        Mit "www.Hompagename.de/<Verzeichnis>/xyz.php {bild.png}" usw. wäre das zwar möglich (...)

        Wenn das möglich wäre, kann es sich kaum um includieren von Dateien in php handeln.

        Lieber OP.
        Möchtest Du sowas machen:
        <img src="/alle/mein/bilder/schau.jpg">
        oder sowas:
        include "/bilder/verarbeitungs/script.php";

        Liebe Grüße in alle Regionen.
        Baba

        1. Hello,

          Es gibt zwei Arten von Verweisen: absolute und relative.
          Und dann gibt es noch

          • Aufrufe über das Filesystem, also "intern"
          • Aufrufe von Ressourcen über ein Protokoll, also z.B. http:
            ... welche dann auch wieder absolut oder relative wären... (Du vergleichst Äpfel mit Obst).

          Nein, das sind unterschiedliche Dimensionen. Die darf man nicht vergessen bei der Betrachtung. Denn als nächstes Problem hätten wir gerne den Rewrite-Modus :-))

          Liebe Grüße in alle Regionen.

          Danke, zurück :-)

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
    2. Hi,

      Mit "www.Hompagename.de/<Verzeichnis>/xyz.php {bild.png}" usw. wäre das zwar möglich aber ich finde das sehr umständlich diesen pfad in jeder Datei anzugeben.

      Das wäre ein Möglichkeit (allerdings wenn dann mit http://www.....).

      Nein. Warum sollte man die Includes per HTTP anfordern? (dann wären die ja auch schon geparst ...)

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. Hello,

        Mit "www.Hompagename.de/<Verzeichnis>/xyz.php {bild.png}" usw. wäre das zwar möglich aber ich finde das sehr umständlich diesen pfad in jeder Datei anzugeben.

        Das wäre ein Möglichkeit (allerdings wenn dann mit http://www.....).

        Nein. Warum sollte man die Includes per HTTP anfordern? (dann wären die ja auch schon geparst ...)

        Geparst wären sie nur, wenn der bereistellende Webserver sie pasen würde. Das muss er aber keinesfalls. Es könnte also auch Plaintext mit "echtem PHP-Code" per http-Include eingebunden werden. Das wäre aber extrem gefährlich. Da könnten böse Menschen (in der Mitte) alles einschleusen (Umleitung), auch wenn der breitstellende Webserver vertrauenswürdig wäre.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de