2013-04-03 147 views
0

下面是与问题相关的代码。基本上,问题是,我的网站根目录正确显示文件夹“测试”,但一旦您按照链接进入“测试”,它不再显示测试。scandir没有正确渲染

$src = scandir($_SERVER['DOCUMENT_ROOT']); 
foreach ($src as $path){ 
    if (is_dir($path)){ 
     if ($path !== 'stats' and $path !== 'data' and $path !== '..' and $path !== '.'){ 
     echo "<li><a href='/$path'>$path</a></li>"; 
     } 
    } 
} 

这里是一个print_r$src

Array 
(
    [0] => . 
    [1] => .. 
    [2] => Test 
    [3] => background.png 
    [4] => content_back.png 
    [5] => data 
    [6] => footer.png 
    [7] => header.png 
    [8] => index.php 
    [9] => main.html 
    [10] => stats 
    [11] => style.css 
) 
+0

之前,点击之后什么在你的$ _ SERVER [ 'DOCUMENT_ROOT'] “测试”? – periklis 2013-04-03 18:56:15

+0

为什么要这样呢?你只是提取子目录,但无需获取有关父目录的信息。 – 2013-04-03 18:56:15

+0

从文档根目录扫描所有内容,这是www.codebundle.net/,所以我认为它们将以相同的方式呈现,因为扫描的目录没有更改。网站上显示的调试代码显示了这两个页面上文档根目录的scandir内容,与这两个页面相关。你可以看到它是一样的。 – 2013-04-03 18:57:51

回答

1

您需要使用绝对路径is_dir:

if (is_dir($_SERVER['DOCUMENT_ROOT'] . '/' . $path)){ 
+0

澄清Pitchinnate:一旦您关注链接,scandir正在寻找从您的新文件夹(DOCUMENT_ROOT/Test)中的DOCUMENT_ROOT抓取的内容,而不是DOCUMENT_ROOT中的内容。你正在使用相对引用。 – Jason 2013-04-03 19:04:35

+0

if(is_dir($ _ SERVER ['DOCUMENT_ROOT']。$ path)){ 正在使用中。主页面没有改变。改回 – 2013-04-03 19:04:50

+0

,我只是意识到,这将使我的代码相对无关,所以我可以看到他正在尝试,但不是预期的效果。无论如何,感谢您的帮助,但由于这不是我寻找的解决方案,我不打算将其标记为答案。 – 2013-04-03 19:06:10