PHP“没有这样的文件或目录” - 但它应该在那里

时间:2010-08-02 22:19:15

标签: php include

我遇到了一个奇怪的问题。我在index.php中包含了一些文件,现在我收到了这个错误:

 require(cfg/cfg.database.inc.php) [function.require]: failed to open stream: No such file or directory in C:\...\index.php on line XX

奇怪的是,它只是在一分钟前发挥作用。我仔细检查了该文件名的拼写。

我做了什么:我使用的是Notepad ++,我看到了这样的代码:

require("cfg/cfg.database.inc.php" );

我想删除")之间的空格,因此我将光标移到那里并推送Del,但它删除了p的最后.php。< / p>

我删除了整行并重写了它,现在我收到了无法找到该文件的错误。我还重命名了无效的文件。子目录cfg中的所有文件都会出现此错误,但不会出现其他子目录中的错误。

任何人都知道我做错了什么或我能做些什么才能找到问题? 感谢。

/ edit:我的文件结构

index.php
cfg/cfg.database.inc.php
cfg/cfg.other.inc.php
core/class.user.inc.php
core/...

所有内容均包含在core个作品中,均不包括cfg

3 个答案:

答案 0 :(得分:1)

  

subdir cfg中的所有文件都会收到此错误,但不会收到其他子目录中的错误。

尝试:

require("cfg.database.inc.php");

答案 1 :(得分:1)

这种行为通常有两个原因

  1. 您的PHP文件和/或您的文件名有一个字符,它作为标准的ascii字母呈现在屏幕上,但实际上是另一种编码中的其他字母

  2. 你有多个cfg文件夹,PHP看错了。

  3. 试着看看PHP看到哪个cfg文件夹(相对于你的运行脚本),以及它在那里看到的文件。

    $my_cfg_files = glob('./*');
    

    接下来,通过迭代循环来尝试需要文件

    header('Content-Type: text/plain');
    foreach($my_cfg_files as $file)
    {
        echo 'trying ' . $file . "\n";
        require_once($file);
    }
    exit("\n Done \n");
    

    查看它输出的文件列表。复制脚本打印的内容并将其包含在require语句中。

答案 2 :(得分:0)

可能有空格:

require("cfg.database.inc.php   ");

删除它:

require("cfg.database.inc.php");