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

Почему 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() после приведённого кода, результат не изменился
  • Вопрос задан
  • 2492 просмотра
Подписаться 1 Оценить 6 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
php.net/manual/ru/function.is-file.php

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

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

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