代码之家  ›  专栏  ›  技术社区  ›  Rob

文件获取内容找不到存在的文件

  •  9
  • Rob  · 技术社区  · 16 年前

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

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

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

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

    6 回复  |  直到 13 年前
        1
  •  22
  •   Marc B    16 年前
    file_get_contents('../file.php?this=that')
    

    这将永远不会起作用,除非您用 http://.... 语法。PHP将把这看作是获取名为 file.php?this=that 当前目录之上的一个级别。它不会将其视为相对URL并执行HTTP请求,而是使用本地文件系统处理程序。你很可能有 file.php 但是,由于本地文件系统没有URL或查询参数的概念,因此它不知道如何去掉 ?this=that 只是负载 文件PHP . 因此,您的“无此类文件错误”。

        2
  •  14
  •   Schahriar SaffarShargh    13 年前

    根据php.net,从本地服务器读取文件的正确解决方案是

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

    我想这可能会有帮助,而不是使用解决方法!

        3
  •  5
  •   Rob    16 年前

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

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

    这就成功了。谢谢大家的帮助。

        4
  •  4
  •   Your Common Sense    16 年前

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

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

    我可以问一下为什么用这个函数打开一个PHP文件吗?

    好吧,答案是:

    $your_var = 1;
    include('../file.php');
    
        5
  •  3
  •   User1988    14 年前

    像这样使用……

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

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

        6
  •  1
  •   Yanick Rochon    16 年前

    是 getcwd() == dirname(__FILE__) ?

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

    推荐文章