PHP :: Операции, не связанные с открытием файла
К операциям, не требующим открытия файла, относятся операции, которые не пытаются получить доступ к содержимому файла и рассматривают его как минимальную целую единицу информации. Примерами могут служить: создание, переименование, копирование, удаление, перенос на другой носитель информации, создание жестких или символьных ссылок, а также получение или редактирование атрибутов файла. Рассмотрим некоторые из функций PHP, позволяющие выполнять над файлами перечисленные операции (см. пример №1).
<?php //is_file() - true, если файл существует и является обычным файлом, //иначе - false. Также смотрите is_link(), is_dir(), file_exists() //В качестве аргумента передается строка с абсолютным или //относительным адресом файла //Выведет bool(true), если файл существует в директории с данным скриптом var_dump(is_file('example_9_1.php')); //touch() - создает пустой файл и устанавливает дату модификации файла //Если файл уже существует, то функция просто изменит дату модификации файла //Возвращает true в случае успеха, иначе - false. //Создаст файл test.php в директории на уровень выше директории со скриптом touch('../test.php'); //link() - создает жесткую ссылку и возвращает true в случае успеха, иначе - //false. В качестве аргументов передаются строки с относительными адресами //См. также linkinfo(), которая возвращает информацию о ссылке //symlink(), которая создаёт символическую ссылку, а также readlink(), //возвращающая путь к файлу, на который указывает символическая ссылка //Создает жесткую ссылку для файла test.php, находящегося в каталоге со скриптом //Ссылка будет расположена в каталоге, в котором расположен каталог со скриптом link('test.php', '../test_link.php'); //rename() - переименовывает файл или директорию и возвращает true в случае //успеха, иначе - false. В качестве аргументов передаются строки со старым и //новым адресом файла. При необходимости, файл переносится между директориями //Переименовывает файл test.php, находящийся в каталоге со скриптом, в //test_2.php и переносит его в каталог на уровень вверх rename('test.php', '../test_2.php'); //copy() - копирует содержимое файла в другой файл, возвращает true в случае //успеха, иначе - false. Содержимое целевого файла перезаписывается. //В качестве аргументов передаются строки с относительными или абсолютными //адресами файлов //Копирует содержимое файла test.php в test_2.php, при этом оба файла //находятся в том же каталоге что и сам скрипт copy('test.php', 'test_2.php'); //unlink() - удаляет файл и возвращает true в случае успеха, иначе - false //В качестве аргумента передается строка с абсолютным или относительным //адресом файла //Удаляет файл test.php, расположенный в каталоге со скриптом unlink('test.php'); //move_uploaded_file() - проверяет, является ли файл загруженным на сервер по //протоколу HTTP POST и в случае успеха перемещает загруженный файл в новое //место, возвращая при этом true, иначе - false. Будет рассмотрена в //следующем параграфе (незабываем про официальный справочник) //см. также is_uploaded_file() //filesize() - возвращает размер указанного файла в байтах или false в случае //ошибки (см. также filetype(), которая возвращает тип файла) echo filesize('test.php'); //Выведет что-то вроде 547 (т.е. байтов) //pathinfo() - возвращает инф-ю о пути к файлу в виде ассоциативного массива //с элементами 'dirname', 'basename', 'extension' (если есть) и 'filename' //Если указан дополнительный параметр PATHINFO_DIRNAME, PATHINFO_BASENAME, //PATHINFO_EXTENSION или PATHINFO_FILENAME, возвращается соответ-я строка //см. также dirname() - возвращает имя родит-го каталога из указанного пути //basename() - возвращает последний компонент имени из указанного пути //realpath() - возвращает канонизированный абсолютный путь к файлу echo pathinfo('test.php', PATHINFO_EXTENSION); //Выведет 'php' echo pathinfo('test.php')['extension']; //Также выведет 'php' //is_readable() - проверяет существование файла и доступен ли он для чтения и //возвращает true в случае успеха, иначе - false //См. также is_writable(), которая проверяет доступен ли файл для записи var_dump(is_readable('test.php')); //Выведет bool(true) или же bool(false) //fileatime() - возвр-ет время последнего доступа к файлу или false при ошибке //см. также filemtime() - возвращает время последнего изменения файла //stat() - возвращает информацию о файле //Выведет временную метку Unix, например, 1460029142 echo fileatime('test.php'); ?>
Пример №1. Выполнение операций, не связанных с открытием файла
Индексный дескриптор (англ. inode) – это структура данных, в которой хранится метаинформация о стандартных файлах, каталогах или других объектах файловой системы, кроме имени и непосредственно самих данных.
Каждый файл имеет свой индексный дескриптор, идентифицируемый по уникальному номеру в файловой системе, в которой располагается этот файл. Обычно индексные дескрипторы хранят информацию о режиме доступа (чтение, запись, запуск на выполнение), принадлежности владельцу (пользователю или группе), и типе файла. Получить индексный дескриптор файла можно при помощи функции fileinode(), а текущего скрипта при помощи функции getmyinode() (см. функцию в разделе «Изменение поведения PHP» -> «Опции и информация PHP» -> «Информационные Функции»).
Быстрый переход к другим страницам
- Файлы в PHP
- Операции, не связанные с открытием файла в PHP
- Редактирование содержимого файла в PHP
- Вернуться к оглавлению учебника