• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick

[PHP] Elegante Lösung?

Geigaman

Macoun
Registriert
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
 

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.