Как проверить, существует ли файл
Короткий ответ
is_file() возвращает true, только если путь существует и это файл:
<?php
$file = sys_get_temp_dir() . '/recipe-exists.txt';
file_put_contents($file, 'x');
var_dump(is_file($file));
var_dump(is_file($file . '.missing'));Результат:
bool(true)
bool(false)Почему не file_exists()
file_exists() отвечает true и для папки:
<?php
$dir = sys_get_temp_dir();
var_dump(file_exists($dir), is_file($dir), is_dir($dir));Результат:
bool(true)
bool(false)
bool(true)Можно ли прочитать
Файл может существовать, но быть недоступным. Перед чтением проверяйте is_readable():
<?php
$file = sys_get_temp_dir() . '/recipe-exists.txt';
file_put_contents($file, 'data');
echo is_readable($file) ? file_get_contents($file) : 'cannot read';Результат:
dataФункции из этого ответа
- is_file — Проверяет, что путь существует и это файл, а не папка.
- file_exists — Проверяет, существует ли файл или папка.
- is_readable — Проверяет, что файл существует и доступен для чтения.