Con este simple programa podemos recorrer recursivamente un directorio y sus subdirectorios. Es mejorable. Lo que si comprueba es que no se mete en el directorio local y tampoco en el ".."

 

crawler('/home/yomismo');

function crawler ($dir,$t=0)
{
    $d = dir($dir);
    //echo "Gestor: " . $d->handle . " ";
    //echo "Ruta: " . $d->path . " ";
    $isdir = 0;

    while (false !== ($entrada = $d->read())) {
            // Que no se meta en los especiales
           if (preg_match("/^[..]{1,2}$/",$entrada)) continue;

            $total = $dir."/".$entrada;

            if (!is_dir($total))
            {
               echo "+".tabme($t).$entrada."
";
           }
           else
           {
               echo "".$entrada."
";
               $t++;
               crawler($total,$t);
               $t--;
           }
    }
    $d->close();
}

function tabme ($t)
{
    $result = "";

    for ($i=0;$i<$t;$i++) $result .= "--";

    return $result;
}
?>