File_exists() возвращает false, когда он должен возвращать true, что может быть причиной этого?

Я отредактировал весь вопрос, чтобы лучше представить ответ.

У меня был цикл для доступа и редактирования файлов изображений. Внутри цикла была сделана проверка file_exists(). Если файл изображения не существует, будет создан пустой файл.

Дело в том, что даже после создания файла file_exists() продолжит возвращать false и создавать новые пустые файлы (перезаписывая предыдущие операции).

Это происходит потому, что file_exists() и некоторые другие файловые функции кэшируют результат. Чтобы предотвратить это, используйте clearstatcache(); перед использованием этих функций, если вы ожидаете, что результат изменился и проверяете тот же файл!

1 ответ

После дальнейшего изучения я обнаружил причину исчезновения некоторых моих изображений: функция file_exists() кэширует результат.

При многократном цикле прохождения по одним и тем же файлам, если файл не существует для запуска, то file_exists() вернет false и будет создан пустой файл.

Если этот же файл был использован снова и результат "false" был кэширован, то предыдущее изображение будет уничтожено и будет использован новый пустой файл.

Чтобы предотвратить это, я вставил clearstatcache(); в начале самого цикла. Это решило мои проблемы!

Я меняю название вопроса, чтобы лучше представить ситуацию.

Другие вопросы по тегам