所以我试图在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”肯定在那个目录中,所以我做错了什么?
答案 0 :(得分:2)
当包含文件时,相对位置是相对于被调用的脚本,即“当前工作目录”。因此,如果脚本A.php
包含./test/B.php
而B.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服务访问的正确权限。