Как мне почитать содержимое каталога скриптом из другого каталога. Например: есть в корне два каталога "1" и "2" в обоих есть еще и другие. Как мне прочитать содержимое /1/5/i/ скриптом из /2/9/t/y/read.php. Скрипт почемуто не видит содержимого етого каталога. Или пишет что нет такого каталога или файла... скрипт такой: PHP: $d = opendir("C:/Program Files/Apache Group/Apache2/htdocs/downloads/"); $res = array(); while($f = readdir($d)) { if($f != "." && $f !== ".." && is_dir($f)) $res[] = $f; } closedir($d); sort($res); foreach($res as $f=>$ff) echo "<img src=\"/logo/folder.gif\" alt=\"folder\"><a href=".$ff."> ".$ss[$f]."</a><br/>"; echo "<br/>"; print 'Папок - '; echo count($res); Выдает ошибку что нету такого каталога, посути проблема в указании пути. Тот же трабл когда в 5-ю директорию инклудишь файл с корня сайта!
Phantik, сори, вроди заработало, забыл сервер перезапустить А по второй части вопроса есть предложения?
безразницы. Главное правильно его указать текущая папка скрипта D:/Work/crm/public Абсолютный путь D:/Work/crm/application относительный путь ../application
черт Да сделай же PHP: <?php var_dump(realpath('/')); var_dump(realpath('.')); var_dump(realpath('..')); var_dump(realpath('ru')); var_dump(realpath('/ru/')); var_dump(realpath('C:/Program Files/Apache Group/Apache2/htdocs/ru')); И посмотри разницу.
1. проверь вывод названия папки ($ss[$f]), как я понимаю там должна быть просто $f: PHP: foreach($res as $f=>$ff) echo "<img src=\"/logo/folder.gif\" alt=\"folder\"><a href=".$ff."> ".$f."</a><br/>"; 2. для чего используешь array_merge(...)? для подсчета количества элементов массива достаточно count($res).
SPOG да тут не в етом проблема, проблема в правильности пути. Уже столько всякого почитал хоть убей не работает! Вот такой код PHP: $ath=$_SERVER['DOCUMENT_ROOT']; echo "<br/>".$_SERVER['DOCUMENT_ROOT'] ."<br/>"; Возвращает мне C:/Program Files/Apache Group/Apache2/htdocs А когда ставлю етот путь сюда: PHP: $d = opendir("C:/Program Files/Apache Group/Apache2/htdocs/downloads/"); $res = array(); while($f = readdir($d)) { if($f != "." && $f !== ".." && is_dir($f)) $res[] = $f; } closedir($d); sort($res); foreach($res as $f=>$ff) echo "<img src=\"/logo/folder.gif\" alt=\"folder\"><a href=".$ff."> ".$ss[$f]."</a><br/>"; echo "<br/>"; print 'Папок - '; echo count(array_merge($res));[/i] Всеравно возврашает ошибку! "Warning: opendir(C:/Program Files/Apache Group/Apache2/htdocs/downoads/) [function.opendir]: failed to open dir: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\ru\downloads\my1.php on line 9" Шош ето такое то! Может у меня чтото не так в конфигах забито?
тут все проще чем кажется, функция is_dir($f)... ты ей передаешь только название файла/папки, без путя к нему/ней, как следствие функция ищет этот файл/папку в том же каталоге где и лежит скрипт... PHP: <?php $cat = "downloads/"; // указывай со слешем на конце, лучше всего от корня сайта $d = opendir(cat); $res = array(); while($f = readdir($d)) { if($f != "." && $f !== ".." && is_dir($cat.$f)) $res[] = $f; } closedir($d); sort($res); foreach($res as $f=>$ff) echo "<img src=\"/logo/folder.gif\" alt=\"folder\"><a href=".$ff."> ".$f."</a><br/>"; echo "<br/>"; print 'Папок - '; echo count($res); ?>
SPOG не в етом трабл, скрипт просто не видит нужного каталога, если запустит его в нужном каталоге то все читает, пишет правильные пути и названия,Ю ну и считает количество, а если из другого каталога пишет ошибку! ето уже пробовалось, результат - Warning: opendir
SPOG А нука... у тебя тут ошибка надо PHP: $d = opendir($cat); ну и путь от корня диска PHP: $cat = "C:/Program Files/Apache Group/Apache2/htdocs/downloads/"; // указывай со слешем на конце, лучше всего от корня сайта Так работает, всем Спасибо!
1. без is_dir($cat.$f) не будет правильно работать) 2. если у тебя скрипт лежит в самой 'downloads/', то и нужно указывать папку относительно него... ('C:\Program Files\Apache Group\Apache2\htdocs\ru\downloads\my1.php') $cat = './'; // выведет директории в этой же папке $cat = '../'; // директории на уровень выше (т.е. C:\Program Files\Apache Group\Apache2\htdocs\ru\) $cat = '../somethindir/'; // и т.д.
Балин! Теперь пишет неверный путь в ссылке папки! http://localhost/ru/downloads/image А надо чтоб http://localhost/downloads/image Я ваще уже холодный, скрипт фигня а проблем мама дорогая!
Фух... Разобрал: PHP: <?php include ("header.tpl"); $ss = array("Картинки","JAVA","Мелодии","Видео"); $root = $_SERVER['DOCUMENT_ROOT']; $kat = "/downloads/"; $cat = "$root$kat"; $d = opendir($cat); $res = array(); while($f = readdir($d)) { if($f != "." && $f !== ".." && is_dir($cat.$f)) $res[] = $f; } closedir($d); sort($res); foreach($res as $f=>$ff) echo "<img src=\"/logo/folder.gif\" alt=\"folder\"><a href=".$kat."".$ff."> ".$ss[$f]."</a><br/>"; echo "<br/>"; print 'Папок - '; echo count($res); include ("baners.tpl"); include ("footer.tpl"); ?> Ошибка была в строке 17: Не правильно: echo "<img src=\"/logo/folder.gif\" alt=\"folder\"><a href=".$ff."> ".$ss[$f]."</a><br/>"; Правильно: echo "<img src=\"/logo/folder.gif\" alt=\"folder\"><a href=".$kat."".$ff."> ".$ss[$f]."</a><br/>"; тут $ff означает только название папки, потому если не поставить перед ним относительное название каталога от корня сайта (в моем случае переменная $kat задает название каталога в корне сайта), скрипт будет возвращать не правильную ссылку на папку\, как будто все ети папки лежат в папке со скриптом. Еще раз всем спасибо! И еще вопрос ета часть скрипта ето номально? PHP: $root = $_SERVER['DOCUMENT_ROOT']; $kat = "/downloads/"; $cat = "$root$kat"; $d = opendir($cat); Я так сделал чтоб не изменять все пути когда закину скрипты на хостинг (ведь там путь будет совсем другой), посути ето возвращает абсолютный путь к файлу или каталогу... Кстати таким способом можно задавать путь к файлу для функции include() Например: PHP: <?php $root = $_SERVER['DOCUMENT_ROOT']; include ("$root/header.tpl"); ?> Кстати такой код решает проблему выяснения абсолютного пути, просто изменяешь имя папки/файла от корня сайта! 8)
В некоторых случаях(серверах) его просто нет (правильного корня сайта в $_SERVER), но думаю если ты с этим столкнешься - ты справишься