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:
Ich wollte den Code so schreiben, dass er portabel ist, und dachte mir, ich baue die Zeile um, so dass sie so aussieht:
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.
...Währe geil wenn das ginge ../../../../../../../root/ währe dann was feines
...
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.
@ 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:
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:
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?
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!).