file_exists
На платформах Windows, для проверки наличия файлов на сетевых ресурсах, используйте имена, подобные //computername/share/filename или \\computername\share\filename .
Возвращаемые значения
Возвращает TRUE , если файл или каталог, указанный параметром filename , существует, иначе возвращает FALSE .
Замечание:
Данная функция возвращает FALSE для символических ссылок, указывающих на несуществующие файлы.
Внимание
Если файлы недоступны из-за ограничений, налагаемых безопасным режимом, то данная функция вернет FALSE . Однако, эти файлы все еще могут быть подключены, если они располагаются в каталоге safe_mode_include_dir.
Замечание:
Проверка происходит с помощью реальных UID/GID, а не эффективных идентификаторов.
Замечание: Так как тип integer в PHP является целым числом со знаком и многие платформы используют 32-х битные целые числа, то некоторые функции файловых систем могут возвращать неожиданные результаты для файлов размером больше 2ГБ.
Примеры
Пример #1 Проверка существования файла
if ( file_exists ( $filename )) echo «Файл $filename существует» ;
> else echo «Файл $filename не существует» ;
>
?>
Ошибки
В случае неудачного завершения работы генерируется ошибка уровня E_WARNING .
Примечания
Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache() .
Подсказка
Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обертками url. Список оберток, поддерживаемых семейством функций stat() , смотрите в Поддерживаемые протоколы и обработчики (wrappers).
Смотрите также
- is_readable() — Определяет существование файла и доступен ли он для чтения
- is_writable() — Определяет, доступен ли файл для записи
- is_file() — Определяет, является ли файл обычным файлом
- file() — Читает содержимое файла и помещает его в массив
Как проверить существование файла на PHP?
Бывают случаи, когда вам необходимо проверить, существует ли указанный файл или нет, например, для того чтобы в последующем совершить с файлом какие-то действия.
Я тоже при разработке модуля столкнулся с этим вопросом. И нашел два варианта решения поставленной задачи.
Проверка существования файла по URL-ссылке
В PHP существует функция «fopen», с помощью которой можно открыть указанный URL.
Что мы делаем? Пытаемся открыть файл, и если нам это удается, значит, файл существует, а противном же случае – файла нет.
else { echo "Файл отсутствует!"; > ?>
А что, если мы имеем не один файл, а несколько, так сказать, массив ссылок? Эта задача как раз и стояла изначально передо мной. И решение уже такой задачи следующее:
В этом случае мы получаем список только тех файлов, которые существуют.
Проверка существования локального файла
Под словом «локальный» подразумевается, что скрипт и файлы для проверки находятся на одном сервере. Если у вас довольно большой массив ссылок – этот вариант самый лучший для решения задачи, так как мы делаем не запрос на сторонний сервер, а сканирование указанных директорий.
В этом способе используется функция «file_exists», и по аналогии с предыдущим вариантом просто заменяется часть скрипта:
else { echo "Файл отсутствует!"; > ?>
И то же самое для массива ссылок:
На что стоит обратить внимание? На то, что этот способ удобен для прогонки файлов, находящихся в пределах нашей файловой системы. Поэтому все ссылки желательно указывать относительные.
Кстати говоря, делая один из заказов, именно этим способом мне удалось просканировать порядка 135 000 файлов всего за пару секунд.
Как проверить существует ли файл через PHP?
Вот моя проверка на логотип, если путь пуст, то логотипа не будет. Как сделать чтобы не было логотипа если путь указан неверно?
" alt="logo">
Нужно проверить есть ли файл $config[‘logo’] . Именно файла, проверка на пустое значение в $config[‘logo’] уже есть
Отслеживать
693 2 2 серебряных знака 23 23 бронзовых знака
задан 6 авг 2021 в 21:24
65 1 1 серебряный знак 9 9 бронзовых знаков
А как программа будет знать, правильный путь указан или нет? Что для неё значит правильно, а что нет?
7 авг 2021 в 15:58
Ну сайт ведь может проверить есть файл, или нет, может можно как-то сделать php запрос. Я вроде и задаю вопрос чтобы решить как-то его, при этом не зная ответа
8 авг 2021 в 21:42
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
file_exists — Проверяет существование указанного файла или каталога
Проверка существования файла
else < echo "Файл $filename не существует"; >?>
is_readable() — Определяет существование файла и доступен ли он для чтения
is_writable() — Определяет, доступен ли файл для записи
is_file() — Определяет, является ли файл обычным файлом
file() — Читает содержимое файла и помещает его в массив
Проверка файла на наличие / существование
Порой мы отображаем на сайтах контент с других ресурсов: картинки или фавиконы. Некоторе браузеры просто оставят пустое место (Firefox), другие же отобразят уродский прямоугольник, явно указывая, что чего-то не хватает (IE). Как же можно средствами PHP проверить существование файла.
Есть функция file_exists(), но она хороша только для файлов в пределах нашей файловой системы, а с удаленным сервером не пройдет.
Есть вариант открывать файл на чтение и в случие ошибки констатировать факт, что файла не существует:
// файл, который мы проверяем
$url = «http://url.to/favicon.ico»;
// пробуем открыть файл для чтения
if (@fopen($url, «r»)) echo «Файл существует»;
> else echo «Файл не найден»;
>
?>
Однако такой прием занимает достаточно много времени.
Есть вариант еще лучше — использовать функцию get_headers():
она делает запрос к файлу и получает все заголовки с ответом примерно в таком массиве
Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Sat, 29 May 2004 12:28:13 GMT
[2] => Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
[3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
[4] => ETag: «3f80f-1b6-3e1cb03b»
[5] => Accept-Ranges: bytes
[6] => Content-Length: 438
[7] => Connection: close
[8] => Content-Type: text/html
)
Как мы видим, в нулевом элементе есть код ответа, 200 значит, что файл существует, и мы спокойно можем получить к нему доступ.
Вот код, который проверит существование файла.
// файл, который мы проверяем
$url = «http://url.to/favicon.ico»;
$Headers = @get_headers($url);
// проверяем ли ответ от сервера с кодом 200 — ОК
//if(preg_match(«|200|», $Headers[0])) < // - немного дольше :)
if(strpos(‘200’, $Headers[0])) echo «Файл существует»;
> else echo «Файл не найден»;
>
?>
Теперь сравним по времени два метода с существующей favicon и с несуществующей:
при несуществующем файле второй метод (get_headers) выигрывает на две сотые секунды.
при существующем файле оба метода показали примерно одинаковое время.
