Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить, существует ли файл

Короткий ответ

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 — Проверяет, что файл существует и доступен для чтения.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.