Есть ли глюк с opendir / readdir? - PullRequest
2 голосов
/ 27 апреля 2010

Вот мой PHP-код:

<?php

// Enumerate the directories in styles
$styles_dir = 'styles/';

if($handle = opendir($styles_dir))
{
    while(FALSE !== ($file = readdir($handle)))
    {
        echo $file . '(' . is_dir($file) . ')<br>';
    }
}
?>

Вот каталоги в styles:

http://files.quickmediasolutions.com/php.jpg

А вот и вывод:

.(1)
..(1)
forest()
industrial()

Почему нет каталогов forest и industrial?

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

Необходимо добавить префикс имени каталога к имени файла, так как is_dir работает относительно текущего каталога.

Изменение

echo $file . '(' . is_dir($file) . ')<br>';

до

echo $file . '(' . is_dir("$styles_dir/$file") . ')<br>';

В качестве альтернативы вы можете изменить каталог на $styles_dir, используя chdir , и тогда ваш текущий код будет работать.

1 голос
/ 27 апреля 2010

Путь для is_dir относительно базового файла, поэтому вам действительно нужно выполнить тест, подобный

is_dir($styles_dir . '/' . $file)

Обратите внимание, что это маскируется для . и .. "каталогов", поскольку они существуют повсеместно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...