Rolf B: php include, Ordnertiefe

Beitrag lesen

Hallo mathefritz,

(Edit: Hatte den laufenden Edit eine Weile liegen lassen müssen, ihr zwei habt mich überholt :) )

set_include_path(...) liefert Dir nicht zurück, was es eingestellt hat, sondern was vorher eingestellt WAR - vermutlich deshalb, damit Du den alten Include-Path bei Bedarf restaurieren kannst, ohne vorher get_include_path() aufgerufen zu haben.

Es ist übrigens deutlich besser, $_SERVER['DOCUMENT_ROOT'] . '/Zentrale/KomandoZentrale' statt den absoluten Pfad an set_include_path zu übergeben. Wenn Du den absoluten Pfad einträgst und lima-city auf einmal meint, die Webs nicht mehr unter /home/webpages/lima-city, sondern unter /webs/reseller/lima-city zu hosten (oder sonst was), dann fällst Du auf die Nase. DOCUMENT_ROOT bleibt dagegen unverändert die Wurzel Deines Übels - äh - deines Webs.

Übrigens ist es so, dass set_include_path in der Form, wie Du es aufrufst, ein weiteres Problem bergen KANN: existierende include_path Einstellungen werden überschrieben. Das ist in deinem Fall kein Problem, weil der alte Wert "." ist (=aktuelles Verzeichnis), und dort sucht PHP sowieso nach includes. Aber im Allgemeinen sollte man den Include-Path nicht ersetzen, sondern erweitern. Das kannst Du das so tun:

set_include_path(get_include_path() . 
                 PATH_SEPARATOR . 
                 $_SERVER['DOCUMENT_ROOT'] . '/Zentrale/KomandoZentrale');

PATH_SEPARATOR zu verwenden ist wichtig, weil das betriebssystemabhängig ist (';' unter Windows und ':' unter Linux).

Rolf

--
Dosen sind silbern