belarusweb.net
© Петр Романовский Минск, 2016-2017.



belarusweb.net

Основы создания сайтов...
PHP+MySQL >>>
                          Учебник Задачник Справочник

9.2. Операции, не связанные с открытием файла

К операциям, не требующим открытия файла, относятся операции, которые не пытаются получить доступ к содержимому файла и рассматривают его как минимальную целую единицу информации. Примерами могут служить: создание, переименование, копирование, удаление, перенос на другой носитель информации, создание жестких или символьных ссылок, а также получение или редактирование атрибутов файла. Рассмотрим некоторые из функций PHP, позволяющие выполнять над файлами перечисленные операции (см. пример 9.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. Будет рассмотрена в следующем 
//параграфе в примере 10.13 (незабываем про официальный справочник)
//см. также 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() - возвращает информацию о файле
echo fileatime('test.php'); //Выведет временную метку Unix, например, 1460029142
?>

Пример 9.1. Выполнение операций, не связанных с открытием файла

Индексный дескриптор (англ. inode) – это структура данных, в которой хранится метаинформация о стандартных файлах, каталогах или других объектах файловой системы, кроме имени и непосредственно самих данных.

Каждый файл имеет свой индексный дескриптор, идентифицируемый по уникальному номеру в файловой системе, в которой располагается этот файл. Обычно индексные дескрипторы хранят информацию о режиме доступа (чтение, запись, запуск на выполнение), принадлежности владельцу (пользователю или группе), и типе файла. Получить индексный дескриптор файла можно при помощи функции fileinode(), а текущего скрипта при помощи функции getmyinode() (см. функцию в разделе PHP опции/Информационные Функции).

Комментарии (0)
Петр Романовский
1. Приветствуются комментарии, которые содержат дополнения к материалу текущей страницы, а также ваши ответы на вопросы других пользователей.
2. Если вам что-то непонятно - спрашивайте, не забывая написать, что именно и с какого места.
Показаны все комментарии
Чтобы оставить свой комментарий, авторизуйтесь, пожалуйста!    
     
belarusweb.net © Петр Романовский, Минск, 2016-2017.
Связаться с автором
Наверх