Эта тема на forum.dklab.ru


Devochka: Проблема при считывании содержания каталога
Прошу помочь с проблемой, возникшей при отладке небольшого скрипта. Впервые начала работать с каталогами и происходит нечто интересное. Видимо, есть какой-то секрет, которого я не знаю ) во всяком случае, в книгах об этом не пишут.
В некой папке у меня лежит сам скрипт и еще одна папка по имени "papka", содержимое которой надо прочитать. К папке, в которой находится скрипт, можно обращаться, понятное дело, как к ".". Дальше я стандартными функциями считываю папку "papka". Но дело в том, что папки, которые лежат в папке "papka" скрипт считывает как файлы, хотя я проверяю их функцией is_dir(). Смотрите сами:


$dir=opendir("./papka");
while ($data=readdir($dir))
{

if ($data=="." || $data=="..")
continue;

else if (is_dir($data))
$arr_d[]=$data;
else
{
$arr_f[]=$data;
echo $data."<br>";
}
}
closedir($dir);


Он упорно выводит названия папок, считая их файлами. А дальше я наткнулась на такую вещь: если в папке "." я создаю какой-нибудь каталог с именем, например "cat", и точно такую же в папке "papka", то скрипт считывает ее корректно. В чем загадка?
Миша Спларов:
А вы сделайте echo $data; в самом начале цикла. Он покажет имя папки, а в is_dir нужно передавать путь, в вашем случае "./papka/" . $data.
Devochka:
Все оказалось горазде проще. Нужно было перед тем, как читать каталог, сделать его текущим. То есть в самом начале написать chdir("./papka").

Вопрос решен, тему можно закрыть.

Эта тема на forum.dklab.ru