包含相对于文件路径的Scandir?

时间:2016-04-02 21:54:09

标签: php path include relative

我在一个文件中包含以下代码,该文件包含在需要此信息的许多其他页面中。

$directory_list = scandir("../packages");
$known_directories = [
  ".",
  ".."
];
$unknown_directories = $result = array_diff($directory_list, $known_directories);

当我直接打开包含此代码的文件时,它可以正常工作。但是,此文件需要能够通过包含在所述文件中将此信息提供给其他文件。似乎scandir正在相对于包含此代码的文件的路径上运行。

无论文件包含在何处,我如何使用包含文件的路径?

1 个答案:

答案 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__)。此目录名称没有尾部斜杠   除非它是根目录。