file_get_contents未找到存在的文件

时间:2010-08-25 01:55:25

标签: php file-get-contents

我有一个文件,我希望使用file_get_contents

访问另一个脚本

我希望它访问的文件位于其上方的目录中,因此我使用file_get_contents('../file.php?this=that')

然而,它正在返回No such file or directory,我无法理解为什么。该文件在那里。

我认为它与本地文件而不是远程文件有关。任何想法或解决方法?

6 个答案:

答案 0 :(得分:23)

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

这将永远不会有效,除非您使用整个http://....语法构建完整的URL。 PHP会将此视为请求获取名为file.php?this=that的文件,该文件高于当前目录。它不会将其视为相对URL并执行HTTP请求,而是使用本地文件系统处理程序。您可能已经file.php了,但由于本地文件系统没有网址或查询参数的概念,因此它不会知道剥离?this=that并只加载file.php 。因此,你的'没有这样的文件错误'。

答案 1 :(得分:14)

根据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);

认为它可能有所帮助,而不是使用变通办法!

答案 2 :(得分:4)

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

首先执行echo getcwd();查看当前的当前目录(从中建立相对路径)
然后仔细检查与此目录相关的file.php位置 检查文件名大小写,它可能是敏感的。

我可以问你为什么用这个函数打开一个php文件?

嗯,答案:

$your_var = 1;
include('../file.php');

答案 3 :(得分:4)

我继续使用了几个$ _SERVER变量,将它们组合在一起以获取完整的URL并在file_get_contents中使用它:

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

这就是诀窍。感谢大家的帮助。

答案 4 :(得分:3)

像这样使用....

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

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

答案 5 :(得分:1)

getcwd() == dirname(__FILE__)

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