2013-04-03 150 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