phpbar.de logo

Mailinglisten-Archive

[php] include_path dynamisch setzen

[php] include_path dynamisch setzen

Ralf Eggert ralf at in-greece.de
Mit Mar 31 10:52:41 CEST 2004


Hallo Björn,

Björn Schotte schrieb am 31.03.2004 08:16:
> ini_set('include_path','foo:bar');
> 
> Wo du das hinschreibst, bleibt ja dir überlassen.

Vielleicht habe ich mich nicht genau genug ausgedrückt oder ich verstehe
immer noch nicht ganz, was du meinst.

Ich möchte in meinen Skripten zu Beginn alle notwendigen Klassen laden.
Das sieht dann in etwa so aus:

    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

Die ersten beiden Klassen liegen immer in den selben Verzeichnissen und
werden in meiner globalen php.ini gesetzt. Die dritte Klasse liegt
jedoch je nach Projekt in einem anderen Verzeichnis.

Momentan habe ich erst drei Projekte auf meinem Entwicklungsrechner, die
ich in dieser Form aufgebaut habe. In Zukunft werden es aber mehr
werden. Derzeit werden auch alle Include Pfade für jedes dieser Projekte
ebenfalls in der globalen php.ini gesetzt.

Auf dem Live-Server ist es ganz einfach, da ich dort in den Document
Root jedes Projekts eine kurze php.ini lege, die nur die Pfade für
Smarty, PEAR und meine Website Klassen setzt. In jedem Document Root
liegt also einen andere php.ini Datei.

Nun suche ich nach einer Alternative, wie ich den include_path setzen
kann, ohne dass ich in meinem Skript vor dem require_once ein ini_set
machen muss. Würde ich den ini_set ins Skript setzen, müssten ich jedes
Mal beim Upload auf den Server aufpassen und das ini_set ggf.
auskommentieren.

Meines Wissens nach ist ini_set eine PHP Funktion, die in einem PHP
Skript aufgerufen werden muss. Eine Alternative wäre, wenn ich ein
Konfigurationsskript schreibe, welches den ini_set und andere Werte
setzt. Nur müsste dies am besten auch bei jedem Aufruf des Skriptes
geladen werden (auto_prepend_file) oder ich lade es zu Beginn des
Skriptes. Da ich aber ein

    require_once("../_php/cfg/config.php");

vermeiden möchte, stehe ich wieder vor dem gleichen Problem wie bei dem
Aufruf der ursprünglichen Website Klasse.

Beim auto_prepend_file habe ich das gleiche Problem wie beim
include_path, weil ich es nur in meiner globalen php.ini setzen kann.

Ich wünsche mir also eine einfache Lösung wie mit der php.ini auf dem
Live-Server unter Linux für meinen Entwicklungsrechner unter WinXP mit
PHP als CGI Version.

Ich hoffe, ich konnte das Problem nun genauer darlegen. Vielleicht ist
mein Wunsch auch einfach nur nicht realisierbar und ich muss mit einer
anderen Lösung leben, die mir nicht so besonders gefällt. Manchmal
verrennt man sich ja auch ganz gerne mal...

Gruss,

Ralf

php::bar PHP Wiki   -   Listenarchive