Ich habe eine Datei, auf die ich mit file_get_contents
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?
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'.
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!
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.
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% 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.
Tags und Links php file-get-contents