phpbar.de logo

Mailinglisten-Archive

[php] include_path dynamisch setzen

[php] include_path dynamisch setzen

Ralf Eggert ralf at in-greece.de
Don Apr 1 09:35:29 CEST 2004


Hallo Björn,

danke auch für deine Hinweise.

> Eventuell ist dein Applikationsdesign broken.

Das will ich nicht ausschliessen. Bisher habe ich überwiegend
Spagetticode geschrieben. Möchte aber in Zukunft etwas solider und
leicht wartbarer entwickeln.

> Ich würde es so machen, dass ich eine local/config.php hätte, die in
> einer Konstanten oder ähnliches den Verzeichnispfad der jeweiligen
> Installation enthält, der sich von Installation zu Installation
> unterscheidet. Diese(n) gebe ich an ini_set('include_path',...);
> weiter und das Problem ist gelöst.

Also ich habe pro Installation eine eigene config Datei, in der ich z.B.
die Datenbank initialisiere und in der ich auch andere, für die
Installation wichtige Werte setze. Das Problem ist aber, dass diese eben
auch in dem Verzeichnis liegt, dass ich ja gerade in den include_path
aufnehmen möchte.

Ich hatte den Aufruf zu Beginn also unterschlagen. Der Beginn eines
Skriptes sieht also wie folgt aus:

    require_once("cfg/config.php");	// load Config Data
    require_once("Smarty.class.php");	// load Smarty Template Class
    require_once("DB.php");		// load PEAR::DB Class
    require_once("cls/website.php");	// load Website Class

Sowohl "cfg/config.php" als auch "cls/website.php" liegen als für
Projekt 1 z.B. in Pfad "e:\projekt1\html\_php".

Also habe ich beim Laden der "cfg/config.php" das gleiche Problem wie
beim Laden der "cls/website.php", weil der include_path eben nicht
gesetzt ist.

Mit dem ABSOLUTE_LOCAL_PATH verhält es sich ja ähnlich, weil ich den ja
zumindest einmal irgendwo setzen muss. Das möchte ich aber an zentraler
Stelle und nicht im Skript selber, eben weil der ABSOLUTE_LOCAL_PATH ja
lokal und auf dem Server anders ist.

> Allerdings bevorzuge ich lieber das dynamische Setzen des Include Pfads,
> da require_once 'cls/website.php'; wesentlich cleaner ist.

Genau das bevorzuge ich auch. Vielen Dank für deine Hilfe, aber
verstanden habe ich es immer noch nicht, wie ich mein Problem lösen
kann. Vielleicht liegt mein Problem auch in diesem Hinweis begründet:

> Eventuell ist dein Applikationsdesign broken.

Wenn mir und niemand anderem nichts weiter einfällt, werde ich vorerst
dabei bleiben, alle include_path Werte in meiner globalen php.ini zu
setzen. Das funktioniert zumindest. :-(

Nochmals danke an alle, die bisher geantwortet haben.

Gruss,

Ralf


php::bar PHP Wiki   -   Listenarchive