我在一个文件中包含以下代码,该文件包含在需要此信息的许多其他页面中。
$directory_list = scandir("../packages");
$known_directories = [
".",
".."
];
$unknown_directories = $result = array_diff($directory_list, $known_directories);
当我直接打开包含此代码的文件时,它可以正常工作。但是,此文件需要能够通过包含在所述文件中将此信息提供给其他文件。似乎scandir
正在相对于包含此代码的文件的路径上运行。
无论文件包含在何处,我如何使用包含文件的路径?
答案 0 :(得分:1)
尝试将dirname(__FILE__)
添加到scandir
:
$directory_list = scandir(dirname(__FILE__)."/../packages");
$known_directories = [
".",
".."
];
$unknown_directories = $result = array_diff($directory_list, $known_directories);
它应该有效,因为__FILE__
被描述为here
__FILE__
已解决符号链接的文件的完整路径和文件名。如果在include中使用,则包含文件的名称为 返回。
您甚至可以用dirname(__FILE__)
__DIR__
__DIR__
文件的目录。如果在include中使用,则目录为 包含的文件被返回。这相当于dirname(__FILE__)
。此目录名称没有尾部斜杠 除非它是根目录。