Archiv verlassen und diese Seite im Standarddesign anzeigen : Relative Pfadangeben in php
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.
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
Das ist es nicht. Der Ordner lumax und alle seine Unterordner sind meine.
Chocwise
30.12.2004, 17: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;
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, 18: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!).
Komisch, bei mir nicht.
Hab's ebenfalls ausprobiert.
Vielleicht hängt das mit der Konfiguration zusammen?
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.