<?php   ### get_dirtree.php ###

#--------------------------------------------------------------------------------- 
// $dir       Startverzeichnis, von dem aus der Directorybaum aufgelöst werden soll
// $dirtree   Adresse der Directory-Liste, die gefüllt werden soll
// $errors    Fehlerzähler, wird jeweils erhöht, wenn ein Directory nicht geöffnet
//            werden konnte
// RETURN     Fehler

   function get_dirtree($dir, &$_dirtree, $errors=0)
   {
      $dir = rtrim($dir, '/').'/';
      if (!$handle = opendir($dir)) return ++$errors;

      while (false !== ($res = readdir($handle)))
      {
          if (is_dir($dir.$res) && $res != '.' && $res != '..' &&  !is_link($dir.$res))
          {
              $_dirtree[] = realpath($dir.$res);
              $errors = get_dirtree($dir.$res, $_dirtree, $errors);
          }
      }
      return $errors;
   }

#-----------------------------------------------------------------------------------

   $_dirtree = array();

   $errors = get_dirtree('../../', $_dirtree);

   echo "<pre>\r\n";
   echo htmlspecialchars(print_r($_dirtree,1));
   echo "<p><b>Fehler:</b> $errors</p>\r\n";
   echo "</pre>\r\n";
   
?>