如何使用PHP在父目录级别列出目录?

如何使用PHP在父目录级别列出目录?,php,Php,我正在尝试使用PHP在父目录级别创建目录的动态菜单。我可以使用以下代码获取子目录: <?php if ($handle = opendir('.')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { if(is_dir(

我正在尝试使用PHP在父目录级别创建目录的动态菜单。我可以使用以下代码获取子目录:

<?php
    if ($handle = opendir('.')) 
    {
        while (false !== ($file = readdir($handle))) 
        {
            if ($file != "." && $file != "..") 
            {
                if(is_dir($file))
                {
                    echo '<a href="./' . $file . '">' . $file . '</a><br/>';
                }
            }
        }
        closedir($handle);
    }
?>

如果我在/B/2页面中,php输出将显示父目录级列表将有指向A、B和C的链接,而不是像“…”这样的符号。如果我在/A/1中,相同的代码将显示相同的父级目录。如果我在/B/3/a中,代码将列出1、2和3。这可能吗?如果是这样,我将如何修改代码来实现这一点?

这样的函数的filename参数是\u dir()
相对于进程的当前目录进行解释,该目录与您提供给
opendir()的目录不同。您需要在目录前加上前缀:

if (is_dir("../$file")) {

您需要像这样链接它:

 /
 |-A
 | |-1
 |-B
 | |-1
 | |-2
 | |-3
 |   |-a
 |   |-b
 |-C
<a href="../A/1">A</a>
<a href="../B/1">A</a>
<a href="../C/1">A</a>

事实证明,这是一个测试问题,看看我是否在目录上有一行。请注意,序列以开头

if (is_dir('../'))
{

}
答案是这样的

<?php
if (is_dir('../'))
{
  if ($dirhandle = opendir($dir))
  {
    while (($directory = readdir($dirhandle)) !== false)
    {
        if ($directory != "." && 
            $directory != ".." && 
            $directory != ".DS_Store" && 
            $directory != ".metadata"
            )
        {
            echo  '<a href="../' . $directory . '">'. $directory . '</a><br>' . "\n";    
        }
    }
    closedir($dh);
  }
}
?>


然后,您可以修改您所做的而不是想要列出的事情的列表,例如index.php。

这可能是权限问题;web服务器运行时需要对目录具有读取权限的用户