php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
include() / "basis-arbeitsverzeichnis"


 
Warhog
10-08-2003, 14:07 
 
Ich habe zur zeit mit einem kleinen problem zu kämpfen... ich habe ein G-Book script programmiert welches mit Textdateien arbeitet. Dieses soll nun per include benutzt werden können. Leider wird wenn das Gästebuch aus einem anderen ordner includet wird dieser ordner quasi als "arbeitsverzeichnis" übernommen wodurch z.B. ein befehl wie
file("data.txt");
funktioniert dann logischerweise nicht mehr, da sich in dem verzeichnis aus dem das G-Book heraus includet wurde keine data.txt (oder nicht die vorzufindende) befindet.

Ich bin nun auf die idee gekommen eine Variable $wd (working-directory) vor jeden file() und fopen() befehl zu packen, klappt auch vorzüglich, doch das G-Book ist dadurch nur durch den include aus genau dem verzeichnis das mit $wd spezifiziert wurde zu betreiben...

weiterhin bin ich auf die idee gekommen einfach eine http:// anfrage zu stellen wodurch wirklich nur der output includet wird, doch dann ist mir aufgefallen dass auf PHP-Installationen mit allow_url_fopen = off config dies ebenfalls nicht geht (wenn auch auf dem selben server gelegen)...

weiß jemand rat wie ich dieses problem lösen kann? gibt es vielleicht eine variable die den tatsächlichen pfad des scriptes enthält oder ähnliches so dass ich daraus einen verzeichnisnamen kriege der in $wd auch per include das aus sicht der file die includet richtige verzeichnis kriege??

für jede hilfe bin ich dankbar ;)

greetz, Warhog { www.warhog.info | www.scravy.de }

 
PHPbeginner
10-08-2003, 14:41 
 
wie wärs mit ../ ?

 
Warhog
10-08-2003, 16:10 
 
Also...

stell dir vor du hast dein root-verzeichnis "/" und darin ein verzeichnis "/gbook/" . Das G-Book ist die "/gbook/index.php". Deine HomePage wird über die "/index.php" geregelt.

Includest du nun von "/index.php" die "/gbook/index.php" ist für die "/gbook/index.php" das hier "/" das arbeitsverzeichnis. Versucht die "/gbook/index.php" nun die datei "data.txt" zu öffnen die sich normalerweise in "/gbook/data.txt" befindest, so öffnet sie die "/data.txt" die wahrscheinlich nicht existiert, denn sie soll ja die "gbook/data.txt" öffnen.

Ich habe das problem vorerst so gelöst dass einfach (aus sicht der "/gbook/index.php" die von der "/index.php" includet wird, muss sie ja die "/gbook/data.txt" öffnen) eine variable $wd mit dem relativen pfad zum gbook vorne dran gehänggt wird
file($wd."/data.txt");
Das WD (working directory) lässt sich in den Einstellungen des g-books ändern. Problem ist jetzt nur dass das g-book jetzt nur noch per include aus der "/index.php" funktioniert und z.B: nicht mehr per include über eine "/hp2/index.php" oder gar per direktaufruf (da es nun auch aus "/gbook/" heraus versucht $wd."/data.txt" zu öffnen was dann ja "/gbook/gbook/data.txt" wäre!

Eigentlich ist das kein problem, da man das ja so anpassen kann. Das Script möchte ich aber zum Download anbieten so dass es auch von leuten ohne oder mit geringeren PHP-kenntnissen genutzt werden kann - und vor allen dingen ohne dabei den quellcode des g-books anrühren zu müssen für evtl. updates usw.

hoffe ich konnte mein dilämmer gut darstellen, falls ihr das script sehen wollt is auf info.warhog.net/?page=download.htm bzw. direkt: http://info.warhog.net/download/g-boxx-v1.5-alpha1 (alpha1 der v1.5)

greetz, Warhog

 
Warhog
10-08-2003, 16:12 
 
uaaar, der link is falsch
-> http://info.warhog.net/download/g-boxx-v1.5-alpha1.zip *die sache mit den dateiendungen :D *

 
Payne_of_Death
10-08-2003, 20:12 
 
Ähm hast du schon mal phpinfo(); ausgeben lassen?

Wenn nicht dann mach das mal, hier wirst du z.B. auch auf die Variable
$_SERVER["DOCUMENT_ROOT"] stossen.
Mit Hilfe dieser Variable kannst du deinen Workpfad vorgeben.

Also praktisch die Variable und dein Script zusammenhängen via String und siehe da er sucht dann in Htdocs und nicht in deinem derzeitigen Verzeichnis.

 
Warhog
10-08-2003, 20:21 
 
wuow, danke :D

genau sowas hab ich gesucht - schade nur dass das nur auf apache funktioniert... aber wer benutzt schon PHP ohne Apache :D

big thx nochmal :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:36 Uhr.