$arr=system("dir /a /b /s c:\\svn\\*.*");  // *nix 下面就用 ls
print_r($arr);或者
my_ls($path);// 这个函数你稍微改进一下,也可以支持通配符,比如把 函数第一行 '*' 改为 '*.php' 那就只列出php文件
function my_ls($path){
    foreach (glob($path.DIRECTORY_SEPARATOR.'*') as $f) 
        echo is_dir($f) ? my_ls($f) : "$f\n";            
}

解决方案 »

  1.   

    递归调用function getWholeDir($dir, $cdir, $n, &$dirlist)
    {
      if($cdir != "")
        $cdir = $dir . "/" . $cdir;
      else 
        $cdir = $dir;
      $arrTmp = array();
      $arrTmp['dir'] = $cdir;
      $arrTmp['n'] = $n;
      $dirlist[] = $arrTmp;  $handle=opendir($cdir);
      while ($file = readdir($handle))
      {
        if(is_dir($cdir  . "/" . $file) && $file != "." && $file != "..") 
        {
          getWholeDir($cdir, $file, $n+1,  &$dirlist);
        }
      }
      closedir($handle);
    }
    getWholeDir('./fire', "", 0, &$dirlist);
    print_r($dirlist);
      

  2.   

    我是这么写的,能通过:
    <html>
    <?
    exec("/bin/ls / $dir > /tmp/syslog");
    $logInfo = file("/tmp/syslog");$logInfNum = count($logInf);
    for($i=0;$i<$logInfNum;$i++){
        echo "$logInf[$i]";
    }
    ?>
    </html>