Skip to main content

Проверка файла на наличие / существование

Порой мы отображаем на сайтах контент с других ресурсов: картинки или фавиконы. Некоторе браузеры просто оставят пустое
место (Firefox), другие же отобразят уродский прямоугольник, явно указывая, что чего-то не хватает (IE). Как же можно средствами PHP проверить существование файла.

Есть функция file_exists (), но она хороша только для файлов в пределах нашей файловой системы, а с удаленным сервером не пройдет.

Есть вариант открывать файл на чтение и в случие ошибки констатировать факт, что файла не существует:

Есть вариант еще лучше — использовать функцию get_headers ()
она делает запрос к файлу и получает все заголовки с ответом примерно в таком массиве

Как мы видим, в нулевом элементе есть код ответа, 200 значит, что файл существует, и мы спокойно можем получить к нему
доступ.

Вот код, который проверит существование файла.

Теперь сравним по времени два метода с существующей favicon и с несуществующей:
* при несуществующем файле второй метод (get_headers) выигрывает на две сотые секунды.
* при существующем файле оба метода показали примерно одинаковое время