2013-09-28 27 views
0

我有這個PHP腳本從目錄中讀取MP3文件:的PHP讀取目錄以絕對路徑

// Set your return content type 
header('Content-type: text/xml'); 

//directory to read 
$dir = ($_REQUEST['dir']); 
$sub_dirs = isBoolean(($_REQUEST['sub_dirs'])); 

if(file_exists($dir)==false){ 
    //echo $_SERVER['DOCUMENT_ROOT']; 
    //echo "current working directory is -> ". getcwd(); 
    echo 'Directory \'', $dir, '\' not found!'; 
}else{ 
    $temp = getFileList($dir, $sub_dirs); 
    echo json_encode($temp); 
} 

function isBoolean($value) { 
    if ($value && strtolower($value) !== "false") { 
     return true; 
    } else { 
     return false; 
    } 
} 

function getFileList($dir, $recurse){ 

    $retval = array(); // array to hold return value 
    if(substr($dir, -1) != "/") // add trailing slash if missing 
    $dir .= "/"; // open pointer to directory and read list of files 
    $d = @dir($dir) or die("getFileList: Failed opening directory $dir for reading"); 

    while(false !== ($entry = $d->read())) { // skip hidden files 
     if($entry[0] == "." || $entry[0] == "..") continue; 

     if(is_dir("$dir$entry")) { 
      if($recurse && is_readable("$dir$entry/")) { 
       $retval = array_merge($retval, getFileList("$dir$entry/", true)); 
      } 
     }else if(is_readable("$dir$entry")) { 
      $path_info = pathinfo("$dir$entry"); 
      if(strtolower($path_info['extension'])=='mp3'){ 
       $retval[] = array( 
        "path" => "$dir$entry", 
        "type" => $path_info['extension'], 
        "size" => filesize("$dir$entry"), 
        "lastmod" => filemtime("$dir$entry") 
       ); 
      } 
     } 
    } 
    $d->close(); 
    return $retval; 
} 

該文件位於在同一目錄作爲執行腳本的HTML頁面。例如,我通過相對路徑'audio/mp3' or '../audio/mp3',它都運行良好。

是否有可能使此讀取目錄具有絕對路徑?

例如,如果我想通過這個:http://www.mydomain.com/someFolder/audio/mp3和HTML網頁,其中執行腳本和PHP文件將被放置在以下位置:http://www.mydomain.com/someFolder/

謝謝!

+0

...你說,試過用絕對路徑運行它嗎? – Nightfirecat

+0

改爲使用[directoryiterator](http://php.net/manual/en/class.directoryiterator.php),也許這不是允許某人閱讀文件系統的好主意。 –

回答

0

Web根始終是/。您永遠不需要主機名或協議部分,root可以只是服務器的根,而不是某個文件夾或文件。

如果你需要一些路徑,比如/ testthesis/- 有辦法,但它與web根目錄沒什麼共同之處。

如果您需要webroot的文件系統目錄 - 它位於$ _SERVER ['DOCUMENT_ROOT']變量中。