1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

[PHP] Elegante Lösung?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Geigaman, 25.09.06.

  1. Geigaman

    Geigaman Macoun

    Dabei seit:
    17.03.06
    Beiträge:
    116
    Hallo!

    Ich bin gerade mal wieder am rumexperimentieren und habe ein Problem, welches meineserachtens eigentlich häufiger auftreten müsste. Allerdings finde ich nirgends eine Lösung.
    Mein Problem:
    Ich möchte am Anfang einer php-Datei (a.php) ein Include auf eine andere php-Datei (b.php) machen, soweit sogut. Nun kommt allerdings der knifflige Teil. b.php liegt in /lib/b.php (also www.meinprojekt.dev/lib/b.php) a.php hingegen soll irgendwo frei in einem beliebigen Unterverzeichnis meines URL-Roots liegen (z.B. www.meinprojekt.dev/irgend/ein/pfad/a.php) Wie bekomme ich es mit möglichst wenig Code hin, dass a.php mein b.php trotzdem findet.
    Meine versuchten Lösungen_
    1. Die $_SERVER['DOCUMENT_ROOT'] bringt mir in diesem Fall nichts, da ich den eingebauten Apachewebserver laufen habe und eine virtuelle Adresse eingerichtet habe. Also http://www.meinprojekt.dev=http://localhost/~username/meinprojekt
    2. Die ganze Zeit hatte ich eine Datei namens "ROOT" in das Basisiverzeichnis gelegt und dann rekursiv gesucht, bis ich sie gefunden hatte. Dann habe ich dementsprechend viele "../" vor meine "lib/b.php" geklebt.
    3. Gerade habe ich mit dirname($_SERVER['PHP_SELF']) herumgespielt und darin dann die "/" gezählt. Lief aber im Endeffekt auf die 2.Lösung raus.

    Gibt es die Möglichkeit das ganze eleganter zu lösen ?

    Danke schonmal
     
  2. tilo

    tilo Gast

    Du kennst doch den Pfad zur einzubindenen Datei, oder? Dann könntest du die Datei doch einfach per include('/lib/b.php'); einbinden.
    Falls du hingegen etwas dynamischer sein möchtest, und das etwas strukturieren möchtest, dann legst du vorher Variablen fest:
    $appPath = 'srv/www/web1/html/';
    $projectPath = 'meinProjekt/';
    $classPath = 'classes/';
    $templates = 'templates/';

    und dann include($appPath.$projectPath.$classPath.'b.php');

    so in etwa .. dann brauchst du bei ner verschiebung nur noch diese angaben zu ändern.
     

Diese Seite empfehlen