Is_file возвращает true на директорию

Рейтинг: 0Ответов: 1Опубликовано: 22.09.2014

Есть директория с поддиректориями, которые необходимо перебрать и выполнить для них определенные действия:

  while($dir = readdir($heandler)){ // где $heandler - родительская директория
    if(!is_file($dir)){
      // какие-то действия
    }
  }

Так вот: для одной из папок is_file упорно возвращает true. Я даже не знаю, как диагностировать проблему. Смотрел вывод ls -la - для всех директорий одинаковый вывод, так что думаю проблема не в ОС. clearstatcache не помогает, а вот переименование директории решает проблему, да только мне такой вариант не подходит (папка - модуль yii, слишком много путей придется поменять).

Ответы

▲ 2Принят

is_file должен получать корректный путь от базового скрипта. А readdir возвращает просто имя. И если допустить ситуацию вида (структура каталогов и файлов, + поставлен напротив каталогов)

 script.php 
 test
+dir 
   foo
   bar
  +test
     foo1
     bar1

В таком случае каталог test может быть "файлом". и переименования действительно поможет. Пример кода посмотрите здесь.