Php读取具有绝对路径的目录

时间:2013-09-28 09:39:41

标签: php directory

我有这个PHP脚本,它从目录中读取mp3文件:

// 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/

谢谢!

1 个答案:

答案 0 :(得分:0)

Web根始终只是/。您永远不需要主机名或协议部分,root只能是服务器的根,而不是某个文件夹或文件。

如果你需要一些路径,比如/ testthesis / - 有方法,但它与web root没什么共同之处。

如果您需要webroot的文件系统目录 - 它位于$ _SERVER ['DOCUMENT_ROOT']变量中。