我有一个文件,我希望使用file_get_contents
我希望它访问的文件位于其上方的目录中,因此我使用file_get_contents('../file.php?this=that')
然而,它正在返回No such file or directory
,我无法理解为什么。该文件在那里。
我认为它与本地文件而不是远程文件有关。任何想法或解决方法?
答案 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__)
作为基本路径使用绝对路径(在引导程序中设置常量并将该常量用作基本路径值)并且一切正常。我们没有深入研究这个问题,但也许你遇到了同样的问题。我只是在这里猜测。