File exists: примеры (PHP)
file_exists(string $filename): boolФункция file_exists в PHP проверяет наличие файла или директории в файловой системе.
Основное применение – верификация существования указанного пути перед операциями чтения, записи, включения файлов или обработкой данных.
Функция принимает один обязательный параметр:
- $filename (string) – Путь к проверяемому файлу или директории. Можно использовать как абсолютный, так и относительный путь.
Возвращаемое значение – true, если файл или директория существуют, и false в противном случае.
<?php
if (file_exists('config.ini')) {
echo 'Файл конфигурации найден.';
} else {
echo 'Файл отсутствует.';
}
?>Файл конфигурации найден.
<?php
if (file_exists('/var/www/uploads')) {
echo 'Директория uploads существует.';
}
?>Директория uploads существует.
<?php
$result = file_exists('C:\Projects\site\index.php');
var_dump($result);
?>bool(true)
Некоторые функции предлагают более специфичную проверку.
- is_file() – Проверяет, является ли путь обычным файлом. Возвращает false для директорий.
- is_dir() – Проверяет, является ли путь директорией.
- is_readable() – Проверяет существование файла или директории и доступность для чтения.
- is_writable() – Проверяет существование и возможность записи.
file_exists() используют для общей проверки существования пути. is_file() или is_dir() применяют, когда важна природа объекта. Функции is_readable() и is_writable() нужны для проверки прав доступа.
<?php
// Работает, если скрипт запущен из директории проекта
if (file_exists('images/photo.jpg')) { /* ... */ }
// Более надежный вариант с __DIR__
if (file_exists(__DIR__ . '/images/photo.jpg')) { /* ... */ }
?>Функция не проверяет содержимое файла и не читает его. Пустой файл считается существующим.
<?php
// Файл empty.txt существует, но не содержит данных
echo file_exists('empty.txt') ? 'Существует' : 'Нет'; // Существует
?>На серверах с strict open_basedir или безопасным режимом функция может вернуть false для файлов вне разрешенных директорий, даже если они физически есть.
В поведении функции file_exists() в последних мажорных версиях PHP (8.x) существенных изменений не произошло. Поведение остается стабильным и обратно совместимым.
Основные улучшения связаны с общей производительностью и оптимизацией работы с файловой системой в ядре PHP 8.
<?php
$template = 'templates/header.php';
if (file_exists($template) && is_file($template)) {
include $template;
} else {
include 'templates/fallback_header.php';
}
?><?php
$possiblePaths = [
'/usr/local/config.json',
__DIR__ . '/config.json',
getenv('HOME') . '/.app/config.json'
];
foreach ($possiblePaths as $path) {
if (file_exists($path)) {
$configFile = $path;
break;
}
}
?>Функция возвращает true, если символическая ссылка существует, даже если целевой файл поврежден.
<?php
// symlink_link -> target_file
var_dump(file_exists('symlink_link')); // bool(true)
?><?php
function getCachedData($key, $ttl = 3600) {
$cacheFile = __DIR__ . '/cache/' . md5($key) . '.tmp';
if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < $ttl)) {
return file_get_contents($cacheFile);
}
return false;
}
?><?php
if (isset($_FILES['avatar'])) {
$uploadDir = 'uploads/';
if (!file_exists($uploadDir)) {
mkdir($uploadDir, 0755, true);
}
// ... дальнейшая обработка
}
?>File exists в Python
Используют модуль os.path и его функцию exists(). Существует также isfile() и isdir().
import os.path
print(os.path.exists('config.ini')) # True/False
print(os.path.isfile('config.ini')) # Проверка на файлTrue True
В Node.js применяют методы модуля fs, например, fs.existsSync().
const fs = require('fs');
console.log(fs.existsSync('config.ini'));true
File exists в MySQL
Прямого аналога для проверки файлов вне СУБД нет, но существует функция LOAD_FILE() для чтения содержимого файла, которая вернет NULL, если файл не существует или недоступен.