Rhöner: Dateien includen

Hallo.

Ich habe ein Problem mit dem Includen von Dateien.
Ich versuche mal meine Projekt-Struktur mittels Baum darzustellen:

|
 |-- common_files
       |-- Class_Product.inc.php
       |-- Functions.inc.php
 |-- administration
       |-- editproducts.php
 |-- readproducts.php

Jetzt liegt folgende Situation vor:
In der Datei "Functions.inc.php" wird "Class_Product.inc.php" included.
Jetzt benötige ich diese "Functions.inc.php" aber sowohl in "readproducts.php" also auch einen Ordner tiefer in "editproducts.php".

A weng kompliziert ich weiß.

Jetzt aber zu meinem Problem:
Wenn ich in "readproducts.php" die "Functions.inc.php" [include ("./common_files/Functions.inc.php")] muss ich in letzterer den relativen Pfad zur "Class_Product.inc.php" auf "./common_files/Class_Product.inc.php" ändern.
Wenn ich jetzt aber im Ordner "administration" ebenfalls die Datei "Functions.inc.php" benötige müsste sich der include-Pfad in dieser auch ändern.
Das kanns doch aber nicht sein oder? Aber ich will auch nicht alles in eine ".inc" Datei reinbringen. Der Übersicht halber.

Hui, das war schwer, ich hoffe, ihr versteht mich.

CIAO Rhöner

  1. hi,

    Wenn ich jetzt aber im Ordner "administration" ebenfalls die Datei "Functions.inc.php" benötige müsste sich der include-Pfad in dieser auch ändern.

    dann solltest du es mal mit relativen pfaden in bezug auf dein document root versuchen.

    gruß,
    wahsaga

    1. Jau das hatte ich auch schon im Sinn.
      Ich dachte halt, dass es irgendeine Funktion gibt: "Include erst selber deine Dateien, bevor du geincluded wirst".

      Dann mach ichs halt doch per Hand.

      Danke dir für die schnelle Hilfe.

      Tschö mit ö

      1. Hello,

        wieso benutzt Du nicht den in PHP dafür vorgesehen Mechanismus?

        Alle include-Dateien gehören in ein Sammelverzeichnis. Dieses wird dann im include_path angegeben. siehe auch http://de3.php.net/manual/de/function.ini-set.php

        Man kann den Include-Path auch mit .htaccess oder in der den virt_host-Einstellungen festlegen. Dann kannst Du den generellen include_path pro Verzeichnis separat einstellen.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. Hallo Rhöner.

    Dürfte zwei möglichkeiten geben:
    1. Jede Datei weiß, auf welcher Ebene sie ist (z.B. durch setzen einer Variablen zu Beginn jeder (Inhalts-)Datei
    2. Absolute Adressierung

    Zu 1.
    Wenn editproducts.php 'weiß', dass $pfad = "../" zum Hauptverzeichnis benötigt wird und readproducts.php 'weiß', dass $pfad = "" weil bereits im Hauptverzeichnis, dann kannst Du in common_files/Functions.inc.php ja Class_Product.inc.php via include($pfad."common_files/Class_Product.inc.php") einbinden.

    Zu 2.
    Wenn Du in common_files/Functions.inc.php die andere Datei via include($_SERVER['DOCUMENT_ROOT']."common_files/Class_Product.inc.php") einbindest, dann sollte es auch von jeder Stelle aus klappen.

    Grüße aus Würzburg
    Julian

    --
    "machines will eat itself." Bau Dir Deinen eigenen Bot.
    http://www.hgb-leipzig.de:83/~franz/hyperportrait/testers/
    1. Hi

      Also deinen ersten Punkt finde ich gut. So werd' ichs wohl machen. Da muss ich auch nicht mit dem Dokument-Root rumfuchteln (Sorry wahsaga ;-)

      Also dann noch einen schönen Tag.

      CIAO