9

我有一个文件,我希望另一个脚本可以使用file_get_contents

我希望它访问的文件在它上面的目录中,所以我正在使用file_get_contents('../file.php?this=that')

但是,它又回来了No such file or directory,我不明白为什么。文件在那里。

我假设它与它是本地文件而不是远程文件有关。有什么想法或解决方法吗?

4

6 回答 6

25
file_get_contents('../file.php?this=that')

http://....除非您使用完整的语法构建完整的 URL,否则这永远不会起作用。PHP 会将此视为获取file.php?this=that当前目录上一级文件的请求。它不会将其视为相对 URL 并执行 HTTP 请求,而是使用本地文件系统处理程序。你很可能file.php在那里,但由于本地文件系统没有 URL 或查询参数的概念,它不会知道剥离?this=that并只是加载file.php. 因此,您的“没有这样的文件错误”。

于 2010-08-25T03:51:11.030 回答
16

根据 PHP.net,使用 file_get_contents 函数从本地服务器读取文件的正确解决方案是使用

// <= PHP 5
$file = file_get_contents('./people.txt', true);

// > PHP 5
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);

认为它可能会有所帮助,而不是使用解决方法!

于 2013-07-09T19:24:08.207 回答
4

该位置没有文件。
你必须使用正确的路径。

首先做一个echo getcwd();看看现在是什么目录(你的相对路径是从哪个目录构建的)
然后仔细检查 file.php 相对于这个目录的位置。
检查文件名大小写,它可能很敏感。

请问一下为什么要用这个函数打开一个php文件?

嗯,一个答案:

$your_var = 1;
include('../file.php');
于 2010-08-25T02:01:44.060 回答
4

我继续使用了一些 $_SERVER 变量,将它们组合在一起以获得完整的 URL 并将其用于file_get_contents

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

那成功了。感谢大家的帮助。

于 2010-08-25T04:37:26.620 回答
3

像这样使用......

$string1=file_get_contents("c:/rose1/ram.txt"); echo $string1;

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

于 2011-12-16T06:32:04.037 回答
1

getcwd() == dirname(__FILE__)

曾经,我遇到过使用相对路径总是在某些共享主机上引发错误的问题。我们最终使用绝对路径dirname(__FILE__)作为基本路径(在引导程序中设置一个常量并将该常量用作基本路径值)并且一切正常。我们没有深入研究这个问题,但也许你遇到了同样的事情。我只是在这里猜测。

于 2010-08-25T02:02:12.903 回答