Scandir相对于包含文件的路径吗?
问题描述:
我在一个文件中包含以下代码,其中包含到需要此信息的其他页面的主机中。Scandir相对于包含文件的路径吗?
$directory_list = scandir("../packages");
$known_directories = [
".",
".."
];
$unknown_directories = $result = array_diff($directory_list, $known_directories);
当我直接打开包含此代码的文件时,它完美地工作。但是,该文件需要能够通过包含在所述文件中而将该信息提供给其他文件。看起来scandir
正在相对于INCLUDED这个代码的文件的路径上运行。
无论包含此文件的位置如何使用包含文件的路径?
答
尝试添加dirname(__FILE__)
到您的路径进入scandir
:
$directory_list = scandir(dirname(__FILE__)."/../packages");
$known_directories = [
".",
".."
];
$unknown_directories = $result = array_diff($directory_list, $known_directories);
因为__FILE__
描述here
__FILE__
的完整路径,并解决符号链接的文件的文件名应该工作。如果在包含内使用,则包含文件的名称是 返回。
你甚至可以__DIR__
__DIR__
文件的目录代替dirname(__FILE__)
。如果在include中使用,则返回包含文件的目录 。这相当于dirname(__FILE__)
。除非目录名是根目录,否则此目录名没有尾部斜杠 。