Немного сократил и оптимизировал код PHP: <?php echo findlow("/var"); function findlow($root) { $dtmp = array_diff(scandir($root), Array( ".", ".." )); $dlst = Array(); $adir = Array(); $wdir = Array(); $maxds = 0; foreach($dtmp as $d) if(is_dir($root."/".$d)) $dlst[] = $d; function recursive($bdir) { $dirs = array_diff(scandir($bdir), Array( ".", ".." )); $darr = Array(); foreach($dirs as $d) if(is_dir($bdir."/".$d)) {if( is_writable($bdir."/".$d) == 1) $darr[] = $bdir."/".$d;recursive($bdir."/".$d);} return $darr; } $random_path = $root.'/'.$dlst[rand(0, count($dlst)-1)]; $adir = recursive($random_path); foreach($adir as $low) if($maxds < substr_count($low, '/')) $maxds = substr_count($low, '/'); foreach($adir as $low) if(substr_count($low, '/') == $maxds) $wdir[] = $low; if (count($wdir) > 0) return $wdir[rand(0,count($wdir)-1)];else return $random_path; } ?> Читать стоило внимательней спустя пару постов.
Извиняюсь, что поднимаю тему, но мне кажется вы очень сильно пошли не туда, а код может понадобится людям, даже не для заливки, а для поиска этого самого шелла, к примеру мне вот понадобился. Поиск самой глубокой папки с правами на запись: PHP: function DirReFind($addres, &$GlobDirpe){ static $CountS = 0; if ($dirhen = @opendir($addres)) { while ($file = @readdir($dirhen)) if(!in_array($file, array('.', '..')) && @is_dir($permdir = "$addres/$file")){ @is_writable($permdir) && ($CountS < ($count = substr_count($permdir, '/'))) && ($CountS = $count) && ($GlobDirpe = $permdir.'/'); DirReFind($permdir, $GlobDirpe); } @closedir($dirhen); } else return false; } DirReFind($_SERVER['DOCUMENT_ROOT'], $ret); var_dump($ret); Если права не нужны, нужно убрать @is_writable($permdir) && . Работает за секунды.
Это конечно хорошо, но мне требовался скрипт, где директория каждый раз выбиралась рандомная. А именно: Даем функции папку, там она выбирает рандомную и уже в ней ищем самую глубокую.