2016-04-25 10 views
0

Ich habe ein Skript in root und ich versuche, es durch file_get_contents() zu öffnen.Warum file_get_contents() kann ein Dateisystem ohne Protokoll nicht öffnen?

Dies funktioniert:

file_get_contents('http://localhost/folder1/folder2/script.php?param=sth'); 

Aber das funktioniert nicht:

file_get_contents('../folder1/folder2/script.php?param=sth'); 

Was ist los? Wie kann ich auf ein Skript des Dateisystems zugreifen, ohne ein Protokoll zu schreiben?


Hinweis: Mit __DIR__ am Anfang dieses Nicht-Protokoll-Pfad ist nicht sinnvoll. Da __DIR__ das gleiche so etwas wie diese, die nicht gültig ist:

C:\xampp\htdocs\folder ... 
+2

_Aber das funktioniert nicht_ was bedeutet? Get params '? Param = etw sind Teil von HTTP und nicht das Dateisystemprotokoll. – AbraCadaver

+0

Hier gehts: http://stackoverflow.com/questions/2445276/how-to-post-data-in-ph-using-file-get-contents/2445332#2445332 – Red

+0

@AbraCadaver oh ... so, deshalb ohne Protokoll funktioniert nicht? Und ich denke ja. denn wenn ich diese Parameter entferne, verbirgt sich dieser Fehler * nicht beim Öffnen des Streams: .. * – stack

Antwort

3

Wenn kein Protokoll ist, behandelt es das Argument als lokalen Pfad. ? hat keine besondere Bedeutung in Windows-Pfadnamen, daher sucht es nach einer Datei mit dem Namen script.php?param=sth und kann sie nicht finden.

Auch beim Zugriff auf eine lokale Datei liest es einfach den Inhalt. Skripte werden nicht ausgeführt, Sie erhalten nur den Skript-Quellcode. Wenn Sie möchten, dass ein Skript ausgeführt wird, müssen Sie den Webserver durchlaufen.

+1

Sie werden nur ausgeführt, wenn Sie über den Webserver auf sie zugreifen, nicht wenn Sie auf sie als normale Dateien zugreifen. – Barmar

+0

Der Webserver ist so konfiguriert, '.php' Dateien als Skripte zu erkennen, die ausgeführt werden müssen, anstatt nur den Dateiinhalt zurückzugeben. – Barmar

+0

Simillar Frage ohne Antwort http://StackOverflow.com/Questions/36903392/Why-File-Get-Contents-doesnt-Work-without-Protocol – stack

Verwandte Themen