file_get_contents findet keine Datei, die existiert

8

Ich habe eine Datei, auf die ich mit file_get_contents

zugreifen möchte

Die Datei, auf die ich zugreifen möchte, befindet sich im Verzeichnis darüber. Daher verwende ich file_get_contents('../file.php?this=that')

Allerdings gibt es No such file or directory zurück und ich kann nicht verstehen warum. Die Datei ist da.

Ich gehe davon aus, dass es etwas damit zu tun hat, dass es sich um eine lokale Datei und nicht um eine entfernte handelt. Irgendwelche Ideen oder Problemumgehungen?

    
Rob 25.08.2010, 01:55
quelle

6 Antworten

20
%Vor%

Dies wird niemals funktionieren, es sei denn, Sie erstellen eine vollständige URL mit der gesamten http://.... -Syntax. PHP sieht dies als eine Anforderung, um eine Datei namens file.php?this=that eine Ebene über dem aktuellen Verzeichnis zu bekommen. Es behandelt es nicht als relative URL und führt eine HTTP-Anfrage durch, stattdessen verwendet es den lokalen Dateisystem-Handler. Sie können sehr gut file.php da oben haben, aber da das lokale Dateisystem kein Konzept von URLs oder Abfrageparametern hat, wird es nicht wissen, dass ?this=that entfernt und nur file.php geladen wird. Daher Ihr 'kein solcher Dateifehler'.

    
Marc B 25.08.2010, 03:51
quelle
13

Laut PHP.net ist die korrekte Lösung zum Lesen von Dateien mit der Funktion file_get_contents vom lokalen Server

%Vor%

Ich dachte, es könnte helfen, anstatt Workarounds zu verwenden!

    
Schahriar SaffarShargh 09.07.2013 19:24
quelle
5

Ich ging voran und verwendete einige $ _SERVER-Variablen, kombinierte sie, um die vollständige URL zu erhalten, und benutzte sie in file_get_contents :

file_get_contents('http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']) . '/../file.php?this=that');

Das hat den Trick gemacht. Danke für die Hilfe alle.

    
Rob 25.08.2010 04:37
quelle
3

Es gibt keine Datei an diesem Ort.
Sie müssen den richtigen Pfad verwenden.

Zuerst eine echo getcwd(); um zu sehen, welches Verzeichnis gerade aktuell ist (aus dem Ihr relativer Pfad stammt)

Überprüfen Sie dann den Speicherort der Datei.php in Bezug auf dieses Verzeichnis.
Überprüfen Sie den Dateinamen auf Groß- und Kleinschreibung. Dies könnte empfindlich sein.

Darf ich einen Grund fragen, warum öffnest du eine PHP-Datei mit dieser Funktion?

Nun, eine Antwort:

%Vor%     
Your Common Sense 25.08.2010 02:01
quelle
2

Verwenden Sie so ....

%Vor%

oder $lines = file_get_contents('http://www.example.com/');

    
User1988 16.12.2011 06:32
quelle
1

ist getcwd() == dirname(__FILE__) ?

Ich habe einmal ein Problem festgestellt, bei dem die Verwendung eines relativen Pfads immer einen Fehler auf einem freigegebenen Host verursachte. Wir verwendeten absolute Pfade mit dirname(__FILE__) als Basispfad (setzten eine Konstante im Bootstrap und benutzten diese Konstante als Basispfad) und alles war in Ordnung. Wir haben uns nicht weiter mit dem Problem beschäftigt, aber vielleicht stoßen Sie auf dasselbe. Ich rate nur hier.

    
Yanick Rochon 25.08.2010 02:02
quelle

Tags und Links