file_exists - was ist da los?
Johannes1989
- php
Hallo Forum,
ich wollte gerade checken ob eine Datei auf dem Server existiert und dabei ist mir folgendes aufgefallen:
$rootDirectory=$_SERVER["DOCUMENT_ROOT"]."/////test/\\\//index.php";
if(file_exists($rootDirectory)){
echo "existiert";
}
im Ordner test liegt zwar eine index.php, aber warum stören file_exists die ganzen /// und \ nicht und es wird trotzdem "existiert" ausgegeben? Auch sehr genial finde ich, dass ich die variable $rootDirectory einer Funktion mitgebe, die dann in etwa sowas macht(ausschnitt):
...
if(file_exists($this->rootDirectory."/".$filename)){
include($this->rootDirectory."/".$filename);
$return_str = ob_get_contents();
}
...
Und siehe da die index.php wird trotz kryptischer Striche richtig inkludiert. Und jetzt die einfache und banale frage: Warum?:-D
VG Johannes
Hi,
warum machst du überhaupt solche Experimente? Die können schnell ins Auge gehen: https://forum.selfhtml.org/?t=185870&m=1234014
Doppelte Slashes oder Backslashes werden ignoriert solange keine Punkt oder anderes dazwischen ist.
Mike
Hello,
warum machst du überhaupt solche Experimente? Die können schnell ins Auge gehen: https://forum.selfhtml.org/?t=185870&m=1234014
Doppelte Slashes oder Backslashes werden ignoriert solange keine Punkt oder anderes dazwischen ist.
Das ist nicht ganz richtig.
Aber der Pfad wird hier vorher immer expandiert und dann der vollständige Pfad angewandt.
Wenn man nun solche Einrichtungen, wie den Rewrite-Mode, nutzen würde, würden die mehrfachen Slashes durch aus eine Bedeutung haben und es würden vollkommen falsche Ergebnisse herauskommen.
Stichwort ist also: realpath() http://de2.php.net/manual/en/function.realpath.php
und interessant sein könnte auch noch dieser Teil des Threads:
[http://forum.de.selfhtml.org/my/?t=185872&m=1234051]
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg