file_get_contents auf sich selbst referenzieren
Pia
- php
0 Mathias Brodala0 Pia0 Mathias Brodala1 rob
Hi,
seltsame Sache. Wollte file_get_contents auf sich selbst
referenzieren und dadurch auslesen, aber dann bekomme ich
die Fehlermeldung, dass die Datei nicht existieren würde.
Im Detail:
$basis = file_get_contents($_SERVER['PHP_SELF']);
echo $basis;
Ergebnis: Fehlermeldung
Dann mal zum testen so probiert:
$basis = file_get_contents('test.php');
echo $basis;
Ergebnis: Funktioniert tadelos
Auch mal so getestet:
$basis = '<a href="'.$_SERVER['PHP_SELF'].'">'.$_SERVER['PHP_SELF'].'</a>';
echo $basis;
Ergebnis: Funktioniert ebenso
Also warum sagt mir PHP, die Datei würde nicht existieren?
Ein Bug, oder Fehler bei mir?
carpe noctem
Pia
Hallo Pia.
seltsame Sache. Wollte file_get_contents auf sich selbst
referenzieren und dadurch auslesen, aber dann bekomme ich
die Fehlermeldung, dass die Datei nicht existieren würde.Im Detail:
$basis = file_get_contents($_SERVER['PHP_SELF']);
echo $basis;Ergebnis: Fehlermeldung
Das Problem hierbei ist, dass der Wert von $_SERVER['PHP_SELF'] stets mit einem Slash beginnt. Damit würde PHP also versuchen, das Script innerhalb des Wurzelverzeichnisses des Systems zu finden. Dort kann es aber logischerweise nicht gefunden werden.
Verwende also besser $_SERVER['SCRIPT_FILENAME'].
Einen schönen Freitag noch.
Gruß, Mathias
Danke Mathias,
Das Problem hierbei ist, dass der Wert von $_SERVER['PHP_SELF'] stets mit einem Slash beginnt. Damit würde PHP also versuchen, das Script innerhalb des Wurzelverzeichnisses des Systems zu finden. Dort kann es aber logischerweise nicht gefunden werden.
wenn ich das richtig verstehe, ist $_SERVER['PHP_SELF'] nur bei
Verweisen zu gebrauchen also Formularen, Links usw., weil
ein Browser auch mit dem vorgestellten Slash umgehen kann?
carpe noctem
Pia
Hallo Pia.
Das Problem hierbei ist, dass der Wert von $_SERVER['PHP_SELF'] stets mit einem Slash beginnt. Damit würde PHP also versuchen, das Script innerhalb des Wurzelverzeichnisses des Systems zu finden. Dort kann es aber logischerweise nicht gefunden werden.
wenn ich das richtig verstehe, ist $_SERVER['PHP_SELF'] nur bei
Verweisen zu gebrauchen also Formularen, Links usw., weil
ein Browser auch mit dem vorgestellten Slash umgehen kann?
Die Feststellung stimmt, die Begründung jedoch nicht (ganz). Da PHP auf Dateisystemebene agiert, entspricht „/“ besagtem Wurzelverzeichnis.
Auf der Webserverebene, entspricht „/“ jedoch dem Wurzelverzeichnis des Hosts. Notiert man nun also einen Link oder ein Formularziel unterhalb von „/“, bezieht sich dies auf besagtes Verzeichnis.
(Natürlich können Browser mit vorangestellten Slashs umgehen; sie setzen die anzufragende Adresse dann entsprechend zusammen.)
Einen schönen Freitag noch.
Gruß, Mathias
Hi!
wenn ich das richtig verstehe, ist $_SERVER['PHP_SELF'] nur bei
Verweisen zu gebrauchen also Formularen, Links usw., weil
ein Browser auch mit dem vorgestellten Slash umgehen kann?
Aus dem PHP-Handbuch (http://www.php.net/manual/de/reserved.variables.php):
'PHP_SELF'
Der Name des aktuell ausgeführten Skripts, relativ zum Wurzelverzeichnis des Servers. Zum Beispiel gibt $_SERVER['PHP_SELF'] in einem Skript mit der Adresse http://example.com/test.php/foo.bar den Namen /test.php/foo.bar zurück.
Falls PHP auf der Kommandozeile ausgeführt wird, ist diese Variable nicht verfügbar.
Schöner Gruß,
rob