在PHP中包含文件后找不到文件

时间:2011-11-18 15:46:47

标签: php include

所以我试图在PHP中包含一些文件但它无法正常工作。

我写的文件位于主目录中。主目录中有一个子目录“D1”,在D1中有另一个目录“D2”。

在D2内部有一堆文件。我写了一个类文件并将其存储在D1中。它看起来像这样:

<?php
include_once('D2/file1.php');
include_once('D2/file2.php');
//ect

class myClass {
   //class stuff
}
?>

然后我在主目录中写一个文件,如下所示:

<?php
include_once('D1/myclass.php');
?>

但是当我加载这个文件时,我得到了这个:

  

警告:include_once(file1.php)[function.include-once]:无法打开流:第2行/home/D1/D2/file1.php中没有此类文件或目录

“file1.php”肯定在那个目录中,所以我做错了什么?

3 个答案:

答案 0 :(得分:2)

当包含文件时,相对位置是相对于被调用的脚本,即“当前工作目录”。因此,如果脚本A.php包含./test/B.phpB.php想要在./test/下包含文件,那么它将相对于A.php。您可以使用__DIR__创建绝对路径,该路径具有脚本路径和名称,无论其位于何处或使用$_SERVER['DOCUMENT_ROOT']指向文档根目录。

B.php示例:

<?php
include(__DIR__.'/C.php');
//will include C.php under the same directory as B.php
?>

另一个选项是将D1添加到php.ini中的包含路径。这告诉php在执行include时查看该目录中的文件。

答案 1 :(得分:1)

如果您使用的是Linux操作系统或MAC操作系统,则需要了解文件的大小写,D2是大写还是小写?等;

另外我注意到你的class myClass {行,这是否意味着该文件被另一个文件包含/使用?在这种情况下,包含文件的相对位置可能会发生变化。

答案 2 :(得分:0)

我猜你有权限问题。检查文件夹/文件是否具有允许Web服务访问的正确权限。