Задать вопрос

Почему is_file не видит корректных файлов?

Здравствуйте!
Есть небольшой код, который считывает папки и файлы по указанному пути. Для скрытия "не файлов" применяется проверка на is_file
$scandir = scandir(getcwd()."/phonebook_archive/");

$i = 1;
foreach($scandir as $line)
{
   if(is_file($line))
   {
	echo "<tr>
	    <td class='number'>$i</td>
            <td class='filename'><a href='?index=$i'>$line</a></td>
	    <td class='date'>". date("d.m.Y h:m:s", filemtime("phonebook_archive/$line")) ."</td>
	</tr>";
  $i++;
  }
}

при отработке такой конструкции получается вот это:
1 phonebook.html
2 phonebook_inc.html

Если исключить проверку is_file, получается вот это:
1 .
2 ..
3 phonebook.html
4 phonebook_inc.html
5 phonebook_new.html -> этого файла при отработке is_file нет. Файл получен как копия предыдущего и переименование(Ctrl+C, Ctrl+V).

Более того, если размножить эти файлы Ctrl+C, Ctrl+V то всё равно видны только первые два файлы, а копии отсекаются проверкой is_file.
Есть подозрение, что это как-то связано с кэшированием

Вопрос: Почему is_file не видит файлов?
UPD 1: Я добавил clearstatcache() после приведённого кода, результат не изменился
  • Вопрос задан
  • 2477 просмотров
Подписаться 1 Оценить 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
php.net/manual/ru/function.is-file.php

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы