PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Relative Pfadangeben in php



Lukas
30.12.2004, 15:39
Hallo,

ich habe ein Problem mit Pfadangeben in php.
Ich poste hier jetzt mal die Daten von meinem Funpic-Testspace, sry für die langen Pfadangaben.

Im Ordner /usr/export/www/vhosts/funnetwork/hosting/lumax/game/inc liegt eine Datei namens main.php. Sie enthälz u.A. folgende Zeile:

$dat = file("/usr/export/www/vhosts/funnetwork/hosting/lumax/game/data/user");
Ich wollte den Code so schreiben, dass er portabel ist, und dachte mir, ich baue die Zeile um, so dass sie so aussieht:

$dat = file("../data/user");
Aber der Php-Interpreter wirft jetzt eine fehlermeldung, weil er meint, dass ich versucht hätte, die Datei /data/user zu öffnen, nicht /usr/export/www/vhosts/funnetwork/hosting/lumax/game/data/user
Woran liegt das? Eigentlich ist ../ doch immer das übergeordnete Directory.

dadie
30.12.2004, 15:47
Vieleicht ist das ja so :

Also sagen wie dier URL der datei ist

user.funpic.de/testdatei.php

so nun will er per ../ einen Ordner zurückgehn aber das geht nett weil du NUR berechtigung für diesen Ordner hast.



Könnte falsch sein währe aber ne Lösung

Währe geil wenn das ginge :D ../../../../../../../root/ währe dann was feines :D

Lukas
30.12.2004, 15:49
Das ist es nicht. Der Ordner lumax und alle seine Unterordner sind meine.

Chocwise
30.12.2004, 18:04
...Währe geil wenn das ginge :D ../../../../../../../root/ währe dann was feines :D
Ich gehe mal stark davon aus das funpic den safe_mode angeschaltet hat oder Zugriff auf übergeordnete Ordnersysteme außerhalb des DocumentRoot auf anderem Wege zu verhindern weiß. ;)
Wäre fatal wenn nicht. :D

@ Problem:
Die vordefinierte Variable "$DOCUMENT_ROOT" enthält immer den Pfad des DocumentRootes des Accounts auf dem das Script läuft.
In deinem Falle theoretisch:
/usr/export/www/vhosts/funnetwork/hosting/lumax/
Darauf kannst du dann aufbauen:
$DOCUMENT_ROOT."data/user"
Weshalb die relative Lösung nicht funktioniert, weiß ich nicht. Erscheint mir selbst unlogisch da ich keinen ehler in deinem Script entdecken kann. Vielleicht Fehlkonfiguration des Servers.
Du könntest prüfen ob der Server überhaupt weiß wo sich die Scripte befinden die er ausführt:

echo $PHP_SELF;

Lukas
30.12.2004, 19:38
Problem gelöst *ganz doll selbsthau* §doof

Ich habe den Pfad, in dem das Spiel liegt, in eine include-Datei geschrieben, da ich zu faul war, den ganzen Kram in jede Datei abzutippen. Das sah dann etwa so aus:

include("datei"); // in dieser Datei steht nur die Php-Anweisung $root = "..";
$dat = file("$root/data/user");
Dann ist $root in der Hauptdatei natürlich nicht mehr gesetzt, was dazu führt, dass der Interpreter den String als "/data/user" ausliest. Ich habe vergessen, das Variablen aus include-Dateien nicht übernommen werden.

btw, wo ich das gerade sehe: dieses Orange für die Kommentare aus dem Php-Syntaxhighlighting ist auf dem Grau sehr schlecht zu erkennen. Kann man da nicht eine andere Farbe einstellen?

dead_orc
30.12.2004, 19:51
Das kann eigentlich nicht der Fehler gewesen sein, da Variablen aus include-Dateien sehr wohl in der aufrufenden Datei verfügbar sind (habs gerade ausprobiert!).

Lukas
30.12.2004, 20:18
Komisch, bei mir nicht.

Hab's ebenfalls ausprobiert.
Vielleicht hängt das mit der Konfiguration zusammen?